【问题标题】:== and === operators in phpphp 中的 == 和 === 运算符
【发布时间】:2024-06-22 19:25:02
【问题描述】:

假设我有一个始终是字符串的变量。

现在取下面的代码:

if($myVar === "teststring")

注意:$myVar 将永远是一个字符串,所以我的问题是

使用===(缩进)或==(相等)哪个更快/最好?

【问题讨论】:

  • 我会在这种情况下使用 ==,因为您并不真正关心 $myVar 的类型。我很确定速度大致相同(它是如此微不足道以至于它并不重要——即使在一个巨型循环中)。
  • 如果您决定使用==,反转条件 ("teststring" == $myVar) 有助于捕捉可能的拼写错误(如果您错过了两个等号之一,您将更改 @ 的值987654327@ 并且有一个永远为真的 if 条件!)。

标签: php operators equality-operator


【解决方案1】:

一般来说,当我编码时,我使用 == 而不是 ===,但是,使用标识更精确,而且速度稍快(差异很小)。

两者之间的差异可能与您需要的任何东西无关。

【讨论】:

  • 恕我直言 == 应该尽可能避免,因为正确阅读类型杂耍如何影响语句需要更多的人力(尤其是在 PHP 中)。 === 要么完全匹配,要么不完全匹配。
  • 我同意,在仔细研究之后 - 我打算修改我的声明。
【解决方案2】:

身份测试总是更快,因为 PHP 不必键入 Juggle 来评估比较。但是,我想说速度差异在纳秒范围内,完全可以忽略不计。

相关阅读:

【讨论】:

  • +1。只是出于好奇,我只是运行了一个快速测试,将 == 语句和 === 放在一个循环中,以便它们被执行 1000 万次。两者之间没有真正的区别。重复测试几次== 有时更快,有时更慢,但我们真正谈论的是 1 毫秒的差异......
  • @nico 这取决于== 是否触发了类型转换。您可能已经测试过比较相同类型的变量的情况(或者相等运算符甚至不尝试转换的情况)。
【解决方案3】:

=== 会稍微快一点,但更重要的是,它强制 $myVar 是一个字符串,所以你不必担心它是其他类型的可能影响.

【讨论】: