我对PHP中的truth
感到有点困惑。
我的理解是0计算为false,非空字符串(除非字符串为“0”)计算为true。
这正如我所料:
var_dump((bool) 0); // prints "boolean false"
var_dump((bool) 'someString'); // prints "boolean true"
但后来我对以下结果感到惊讶:
var_dump((0=='someString')); // prints "boolean true"
我的问题是,为什么0=='someString'
评估为真?
答案 0 :(得分:8)
使用比较(==
)时,与另一个整数相比,运算符字符串将转换为整数。这是因为type juggling in PHP。所以"someString"
求值为零,因为它被转换为整数并且没有前导数字。如果您使用相同的运算符(===
)类型转换未执行,那么"someString"
将被视为文字字符串,然后您的语句将评估为false。
执行类型杂耍时,以下内容将评估为false。其他所有内容都将被评估为真: