【问题标题】:When to use ===, !== over ==, != in PHP [duplicate]何时在 PHP 中使用 ===、!== 而不是 ==、!= [重复]
【发布时间】:2012-05-16 18:29:27
【问题描述】:

可能重复:
php == vs === operator

我了解 PHP 中 ===!====!= 之间的区别,但我总是发现自己偏爱 ===!==,但我没有真正的理由。在 PHP.net 上的文档中,经常有“警告”说您应该使用 === 检查某些内置函数的返回值。所以我的问题是为什么我应该使用一组运算符而不是另一组?

非常感谢:)。

【问题讨论】:

  • 在适当的时候使用它们。如果您了解其中的区别,那么问题是什么?用光了我所有的接近投票,但这是一个非常不具建设性的问题。
  • 那么有没有更合适的网站来问这种问题?有programmers.stackexchange吗?
  • 我对@9​​87654331@的FAQ不太熟悉。我的问题是will likely solicit opinion, debate, arguments, polling, or extended discussion。与个人无关。 ===== 都有自己的位置,所以您不能真正说“使用一个胜过另一个”一般
  • 我明白了,我已经投票结束了。

标签: php


【解决方案1】:

如果自动类型转换没有按照您(或将来必须维护您的代码的开发人员)所期望的方式进行转换(并且类型转换的规则通常很复杂),它可能会导致意外的误报和漏报并且因语言而异,因此这种混淆的空间很大)。

除非您需要键入对话,否则请始终使用三字符版本。

【讨论】:

    【解决方案2】:

    ===!== 仅应在您关心两个操作数属于同一类型的情况下使用。

    否则 - 使用 ==!= - 因为隐式转换是我们喜欢 php 的原因

    【讨论】:

    • @ThiefMaster:我确实喜欢它,因为否则编程将成为连续铸造的地狱,因为 php 从所有第 3 方数据源获取数据作为字符串。 PS:我一直都知道变量是什么类型,所以可能的隐式转换根本不是问题
    • @ThiefMaster:这并不可怕,你在夸大其词:-) PS:我更喜欢if ($string) 而不是if (strlen($string) > 0),因为这对我来说很有意义。 会选择哪个?
    • 这些类型的问题总是会导致同样的对话:)。
    • @baž 确实。如果您使用的是动态类型语言,请了解它的规则并利用它们来发挥您的优势(更少的代码)。否则,请使用强类型语言。 :o)
    • @deceze:嘿,去另一个聊天室寻找错误 - 我们正在讨论类型! ;-)
    【解决方案3】:

    最常见的原因是函数返回数字/字符串,并且可能在错误时返回 false。如果 0 是有效结果,而 false 表示错误,则必须使用 === 进行区分。但是,总是使用 === 可能会导致意外行为,例如当返回 null 并且也被认为是无效值时,但类型检查仅用于 false。因此,如果数据来自您自己的源代码/PHP 函数,并且您知道无效值正好是 1,请使用严格检查。然而,在大多数情况下,== 是一个安全的选择,尤其是在您处理外部数据时,这是您无法控制的。

    【讨论】:

      【解决方案4】:

      ===!== 很重要,如果您使用的函数可能成功返回 0,失败时返回 FALSE。在 PHP 0 中也等于 FALSE,这将导致函数失败的结论。

      if(somefunction() == 0) {
          // Do something
      }
      

      假设somefunction成功退出时返回0,失败时返回FALSE,则上面的sn-p会在返回码为FALSE时触发。

      使用=== 可以防止这种情况发生,因为它只会在响应确实为 0 时触发。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-11
        • 2011-03-06
        • 2010-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多