一直以为PHP的变量是很灵活的,类型想怎么变换就怎么变换。
但实际上并不是这样,当一个变量被赋值为数字时,是变换不了数组的,比如:
以下是代码片段:
[root@localhost shengting]# cat test.php
$a = 454;
$b = 6;
$a['gfgo'] = $b;
var_dump($a);
?>
[root@localhost shengting]# php test.php
PHP Warning: Cannot use a scalar value as an array in /usr/home/shengting/test.php on line 4
Warning: Cannot use a scalar value as an array in /usr/home/shengting/test.php on line 4
int(454)
从var_dump的结果看,不仅有Warning级的错误,赋值也没有成功。而,如果变量一开始是字符串的话,就没这回事情了:
以下是引用片段:
[root@localhost shengting]# cat test.php
$a = `454`;
$b = 6;
$a['gfgo'] = $b;
var_dump($a);
?>
[root@localhost shengting]# php test.php
sh: 454: command not found
array(1) {
["gfgo"]=>
int(6)
}
可以看出,赋值是成功的。
应该,这个是和存储的类型是有联系的。同样,在Shell的Bash中,所有的变量的值都是以字符串方式存储的。尽管这个特性使得bash的数据处理起来很容易,但是也使得数字运算比较困难。原因就是数字也是以字符串的形式存储的,
在Bash中,如果要对数字进行算术运算和逻辑操作,必须先转化为整数(可视为中间值),得到运算结果后再转化为字符串,以便正确的保存在Bash变量中。
Bash提供了三种方式的数字数据进行算术变量:
以下是引用片段:
1:使用let命令。
2:使用shell扩展 $((expression))
3:使用expr命令
具体用法就不说了,哈哈。偶比较喜欢使用第二种。