为啥在 PHP (-1 > false) 中返回 true? [复制]
Posted
技术标签:
【中文标题】为啥在 PHP (-1 > false) 中返回 true? [复制]【英文标题】:why in PHP (-1 > false) returns true? [duplicate]为什么在 PHP (-1 > false) 中返回 true? [复制] 【发布时间】:2014-07-03 12:47:13 【问题描述】:据我所知 false 是 0
if(-1 > false)
print "Here";
在此代码中,如果返回 true 并打印 here
为什么?
【问题讨论】:
(int)false == 0
我认为
来自文档:WARNING: -1 is considered TRUE, like any other non-zero (whether negative or positive) number!
php.net/manual/en/language.types.boolean.php
这有关系吗?没有人写这样的代码。
***.com/a/138954/1803347 看到这个答案
@KarolyHorvath 很有趣
【参考方案1】:
在这种情况下,-1
被转换为布尔值(true
,因为只有0
被视为false
)。所以最后的比较是
if (true > false)
...
Type Juggling 可能非常不直观,因此请始终尽量避免比较两种不同类型的变量的情况。在相等比较的情况下,请始终尝试使用身份运算符 (===
),在不相等的情况下,您所能做的就是添加手动转换。
另见:http://us3.php.net/manual/en/types.comparisons.php
【讨论】:
【参考方案2】: 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`
【讨论】:
为什么-1应该被认为是假的??【参考方案3】:请参阅PHP Comparision Operators - 表与各种类型的比较
Type of Operand 1 Type of Operand 2 Result
bool or null anything Convert both sides to bool, FALSE < TRUE
因此,如果您将 bool 与其他任何东西进行比较,那么第二个操作数将被强制转换为 boolean true。
我们在这里也有信息,FALSE < TRUE
,您的示例中究竟发生了什么。
【讨论】:
【参考方案4】:<
是一个数值比较运算符,代码将-1
转换为true 并因此得到结果。
【讨论】:
以上是关于为啥在 PHP (-1 > false) 中返回 true? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
php 编程,使用file_get_contents('http://www.vketch.com/')获取远程页面超时为啥不会返回false