为什么在PHP(-1> false)中返回true?

时间:2014-05-15 07:37:22

标签: php

因为我知道假是0

if(-1 > false)
    print "Here";

在此代码中,如果返回true,则打印here


为什么?

4 个答案:

答案 0 :(得分:2)

请参阅PHP Comparision Operators - 表与各种类型的比较

Type of Operand 1   Type of Operand 2       Result
bool or null        anything                Convert both sides to bool, FALSE < TRUE

因此,如果将bool与其他任何东西进行比较,那么第二个操作数将被转换为布尔值true。 此外,我们在此处提供了FALSE < TRUE的信息,您的示例中究竟会发生什么。

答案 1 :(得分:1)

在这种情况下,它被-1转换为布尔值(true,因为只有0被视为false)。所以最后的比较是

if (true > false) {
    ...
}

Type Juggling可能非常不直观,因此请尽量避免比较两种不同类型的变量。在相等比较的情况下,总是尝试使用身份运算符(===),如果不平等,您可以做的就是添加手动转换。

另请参阅:http://us3.php.net/manual/en/types.comparisons.php

答案 2 :(得分:1)

<是一个数值比较运算符,代码执行松散比较,将-1转换为true,从而得到结果。

答案 3 :(得分:1)

 WARNING: -1 is considered TRUE, like any other non-zero 
 (whether negative or positive) number! 

检查这两个代码。你可以得到差异

if(-1 > false)
  print "Here"; //This will print the `Here`

if(-1 > 0)
 print "Here"; // Not print `Here`