PHP为什么是0 =='所有'真正?

时间:2018-06-14 07:08:07

标签: php

我正在阅读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 ';
}

打印'你好'。

3 个答案:

答案 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!';