1> false)返回true?
这个问题在这里已经有了答案:
在这种情况下,它是-1
被转换为布尔值( true
,因为只有0
被视为false
)。 所以最后的比较是
if (true > false) {
...
}
Juggling类型可能非常不直观,因此总是尽量避免比较两种不同类型变量的情况。 在平等比较的情况下,总是尝试使用身份运算符( ===
),在不平等的情况下,您只能添加手动投射。
另见:http://us3.php.net/manual/en/types.comparisons.php
请参阅PHP比较运算符 - 各种类型的表格比较
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
转换为真,从而得到结果。