$a = '86';
var_dump($a); //ouput string(2) "86"
var_dump($a['wtf']); //output string(1) "8"
第二oputput奇怪尽管这是相当于在PHP奇怪的输出
var_dump($a[0]); ////output string(1) "8"
有人可以解释我为什么的var_dump($ A [ 'WTF']);输出字符串(1)“8”?
$a = '86';
var_dump($a); //ouput string(2) "86"
var_dump($a['wtf']); //output string(1) "8"
第二oputput奇怪尽管这是相当于在PHP奇怪的输出
var_dump($a[0]); ////output string(1) "8"
有人可以解释我为什么的var_dump($ A [ 'WTF']);输出字符串(1)“8”?
$ a是一个字符串。
在php中的字符串可以看作是一个字符数组(如此$ a [0] =='8'和$ a [1] =='6')
现在,您试图访问字符串的地方['wtf'],因为PHP期望有一个数字,它会尝试将'wtf'转换为数字。由于在此字符串没有数字,它被视为0。
“wtf1”被转换为0,因为它检查第一字符(感谢悲伤BUBE)
“1wtf”转换为1
' 100' 转换为100
‘dfsdgrgergregr’转换为0
PHP有弱类型,也就是说,如果你通过它期待一个整数的字符串,它会透明地将其转换为整数,它在大多数情况下,是好的,因为它允许更简洁的代码。但是,当然,它也允许有更多的错误。
这可能是(可能)原因,为什么添加和连接是由不同的操作符完成的(+
会将两个操作数转换为数字,.
会将两者都转换为字符串)。
正如之前指出的那样,您试图访问字符串索引,该索引只能是整数,因此'wtf'
已正确转换为0
并返回第一个字母。如果你通过了,比如'1o1wut'
,它将被转换为1
。
小心o,在某些组合中它将被视为Octate/base 8数字 – 2012-01-06 07:46:53
当我看到它时,我以为它将'wtf'计数为3(3个字节的数据),并且由于$ a中没有第3个字节,它会开始并输出8 – 2012-01-06 07:29:37
yes,php就像圣经一样,你可以用很多方式解释结果:-D – 2012-01-06 07:31:44
'wtf1'== 0,而不是1,不像'1wtf'。转换停在第一个非数字字符处。 – 2012-01-06 07:32:54