讨论数量:
应该是在使用 ==
的情况下,先转化为相同的类型了,都转为了布尔型的 false,然后比较结果返回 true
了。
使用 ===
全等,那个就会考虑类型的不相同而直接返回 false
。
你可以试试 验证一下 。
字符类型转强制转换为整型,‘无’ 转换成了 0,没毛病
>>> $a = '无'
=> "无"
>>> (int)$a
=> 0
>>> 0 == $a
=> true
>>> 0 === $a
=> false
>>> $a
=> "无"
>>> $b = '有有有啊'
=> "有有有啊"
>>> (int)$b
=> 0
-1 和其它非零值(不论正负)一样,被认为是 true!
<?php
// 0可以通过任何参数,包括自身
var_dump(0 == 1); // false
var_dump(0 == (bool)'all'); // false
var_dump(0 == 'all'); // TRUE, take care
var_dump(0 === 'all'); // false
// 为了避免这种行为,您需要像这样将参数强制转换为字符串
var_dump((string)0 == 'all'); // false
?>
推荐文章: