【问题标题】: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


为什么?

【问题讨论】:

标签: php


【解决方案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 &lt; TRUE,您的示例中究竟发生了什么。

    【讨论】:

      【解决方案4】:

      &lt; 是一个数值比较运算符,代码将-1 转换为true 并因此得到结果。

      【讨论】:

        猜你喜欢
        • 2021-11-10
        • 2019-12-07
        • 1970-01-01
        • 2014-12-29
        • 2019-01-09
        • 2023-01-16
        • 2015-06-22
        • 2015-09-15
        • 2019-02-08
        相关资源
        最近更新 更多