因为我知道假是0
if(-1 > false)
print "Here";
在此代码中,如果返回true,则打印here
答案 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可能非常不直观,因此请尽量避免比较两种不同类型的变量。在相等比较的情况下,总是尝试使用身份运算符(===
),如果不平等,您可以做的就是添加手动转换。
答案 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`