PHP字符串与整数0的比较会返回true吗?

19

可能是重复问题:
为什么PHP认为0等于一个字符串?


我有这段代码:

$o['group'] = "prueba";
if( $o['group'] == 0){
    die("test");
}
为什么会输出test?一个字符串怎么可能等于零?

1
在PHP中,空字符串和字符串“0”在相等运算符(“==”)中都等于零。 - Michael Mior
6
任何其他无法转换为数字的字符串。 - Felix Kling
2个回答

18
如果您想要完全匹配字符串,请使用三个等号的确切类型,像这样:
if( $o['group'] === 0){
当将字符串与数字0相比较时,== 会始终评估为true。

'a string' == 0 也会评估为true,因为任何字符串在与数字比较时都会转换为整数。 如果PHP无法正确地转换字符串,则将其评估为0。 因此,0等于0,等同于true。

来自这里


1
仍然不正确。虽然(int) '0.1e2' === 0是真的,但'0.1e2' == 0是假的。字符串内容决定了将字符串转换为哪种数据类型(intfloat)。 - Gumbo
是的,这仍然是错误的。只有当 $o['group'] == '0' 时才有效。 - Nikolay Traykov

10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接