当我在php中练习时,我注意到,以下表达式会产生奇怪的结果:
011 == 11 // false
'011' == 11 // true
他们都不应该评估相同的结果吗?
答案 0 :(得分:19)
这是因为011
由于前导0
而被视为八进制值。
以下是更深入的解释:
011
字面值被识别为八进制值9
9 == 11 // false
从'011' == 11
开始,它的计算结果为true
,因为当字符串与整数进行比较时,它也会被强制转换为整数值。有趣的是,在过程中忽略了字符串中的前导零,并且php解释器将值视为小数而不是八进制!