2014-05-15 85 views
0

我所知假是0为什么在PHP中(-1> false)返回true?

if(-1 > false) 
    print "Here"; 
在此代码

如果返回的是真和here打印


为什么?

+3

'(INT)假== 0'我认为 – Exlord

+5

从文档:'警告:-1被认为是TRUE,像任何其他非零(不论正负)数! 'http://www.php.net/manual/en/language.types.boolean.php –

+7

它有关系吗?没有人写这样的代码。 –

回答

1

在这种情况下它是-1被转换为布尔型(true,因为只有如0false进行处理)。所以最终的比较是

if (true > false) { 
    ... 
} 

Type Juggling可以非常直观,所以总是尽量避免在那里你比较两个不同类型的变量的情况。在平等比较的情况下,总是尝试使用身份运算符(===),如果出现不平等情况,您只能添加手动投射。

参见:http://us3.php.net/manual/en/types.comparisons.php

1

<是数值比较运算符,代码没有松散比较转换-1为真,因此结果。

2

请参阅PHP Comparision Operators - 表各类

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

所以,如果你比较布尔其他任何事情,那么第二个操作数强制转换为布尔值true比较。 我们还有这里的信息,那FALSE < TRUE,在你的例子中究竟发生了什么。

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` 
+0

为什么地狱应该-1被认为是假? – fast

相关问题