我正在阅读boolean的PHP文档。
其中一条评论说0 ==' all'是的。
http://php.net/manual/en/language.types.boolean.php#86809
我想知道它是如何成真的。
文档说明所有非空字符串都是正确的,除了' 0'。
所以'所有'是真的 和 0是假的。
false == true
应该是假的。
可是:
if(0=='all'){
echo 'hello';
}else{
echo 'how are you ';
}
打印'你好'。
答案 0 :(得分:7)
在PHP中,运算符==和!=不比较类型。因此,PHP会自动将'all'转换为0的整数。
echo intval('all');
您可以使用===运算符检查类型:
if(0 === 'all'){
echo 'hello';
}else{
echo 'how are you ';
}
请参阅Loose comparisons表。
答案 1 :(得分:4)
由于左操作数是整数,因此php会尝试将第二个转换为整数。因此,当字符串的整数表示为零时,您将返回true
。
如果切换操作符,则会得到相同的结果。
正如Bhumi所说,如果您需要这种比较,请使用===
。
答案 2 :(得分:1)
如果你把一个字符串作为条件放在IF steatment中,它被检查为非空或'0',但如果你将它与一个整数(==,<,>,...)进行比较,它是转换为0 int值。
if('all')
echo 'this happens!';
if('all'>0 || 'all'<0)
echo 'this never happens!';