5

可能的重复:
相等(== 双等号)和身份(=== 三等号)比较运算符有何不同?
参考 - 这个符号在 PHP 中是什么意思?
php 不等于 != 和 !==

此代码段中的!==和运算符是什么?===

if ( $a !== null ) // do something
if ( $b === $a ) // do something
4

6 回答 6

13

他们是身份等价算子。

1 == 1
1 == "1"
1 === 1
1 !== "1"
true === true
true !== "true"
true == "true"

所有这些都等同于真实。另请查看@mbeckish 提供的此链接

于 2010-11-02T17:30:21.103 回答
6

它们是严格的类型比较运算符。他们不仅检查,而且检查类型

考虑比较数字或字符串时的情况:

if (4 === 4) // same value and type
{
  // true
}

if (4 == "4") // same value and different type but == used
{
  // true
}

if (4 === "4") // same value but different type
{
  // false
}

这适用于对象和数组。

因此,在上述情况下,您必须做出明智的选择是使用==还是===

===当您也确定类型时使用它是个好主意

更多信息:

于 2010-11-02T17:30:43.223 回答
1

=== 还检查变量的类型。

例如,"1" == 1返回 true 但"1" === 1返回 false。它对于可能返回 0 或 False 的函数(例如 strpos)特别有用。

这将无法正常工作,因为 strpos 返回 0 和 0 == false

if (strpos('hello', 'hello world!'))

但是,这将起作用:

if (strpos('hello', 'hello world!') !== false)
于 2010-11-02T17:30:19.943 回答
0

双 = 符号是一种比较,用于测试左侧的变量/表达式/常量是否与右侧的变量/表达式/常量具有相同的值。

三重 = 符号是比较两个变量/表达式/常量是否相等并且具有相同类型 - 即两者都是字符串或两者都是整数。

同样的概念适用于 !==

于 2010-11-02T17:31:58.463 回答
0

只有当给定值的类型和值都相等时,它们才会返回 true。示例: 1 === 1 为真 “1” === 1 为假 1 === “1” 为假 “1” === “1” 为真

与 == 一样,以上所有内容都是正确的

于 2010-11-02T17:33:46.030 回答
0

当您使用两个等号==时,它将检查相同的值。

if( '1' == 1 ) { echo 'yes'; }

上面的代码有效,因为它们具有相同的值。

但是,如果您使用三个等号===,它将检查值和数据类型。

所以

if( '1' === 1 ) { /* this will not work */ }

这是因为'1'数据类型为stringwhile 1is aninteger或 anumber

但是你可以做这样的事情 - 我认为:D

if( (integer) '1' === 1 ) { echo 'this works'; }

因为我们正在将数据类型更改'1'integer

于 2010-11-02T17:34:26.963 回答