可能的重复:
相等(== 双等号)和身份(=== 三等号)比较运算符有何不同?
参考 - 这个符号在 PHP 中是什么意思?
php 不等于 != 和 !==
此代码段中的!==
和运算符是什么?===
if ( $a !== null ) // do something
if ( $b === $a ) // do something
可能的重复:
相等(== 双等号)和身份(=== 三等号)比较运算符有何不同?
参考 - 这个符号在 PHP 中是什么意思?
php 不等于 != 和 !==
此代码段中的!==
和运算符是什么?===
if ( $a !== null ) // do something
if ( $b === $a ) // do something
他们是身份等价算子。
1 == 1
1 == "1"
1 === 1
1 !== "1"
true === true
true !== "true"
true == "true"
所有这些都等同于真实。另请查看@mbeckish 提供的此链接
它们是严格的类型比较运算符。他们不仅检查值,而且检查类型。
考虑比较数字或字符串时的情况:
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
}
这适用于对象和数组。
因此,在上述情况下,您必须做出明智的选择是使用==
还是===
===
当您也确定类型时使用它是个好主意
更多信息:
=== 还检查变量的类型。
例如,"1" == 1
返回 true 但"1" === 1
返回 false。它对于可能返回 0 或 False 的函数(例如 strpos)特别有用。
这将无法正常工作,因为 strpos 返回 0 和 0 == false
if (strpos('hello', 'hello world!'))
但是,这将起作用:
if (strpos('hello', 'hello world!') !== false)
双 = 符号是一种比较,用于测试左侧的变量/表达式/常量是否与右侧的变量/表达式/常量具有相同的值。
三重 = 符号是比较两个变量/表达式/常量是否相等并且具有相同类型 - 即两者都是字符串或两者都是整数。
同样的概念适用于 !==
只有当给定值的类型和值都相等时,它们才会返回 true。示例: 1 === 1 为真 “1” === 1 为假 1 === “1” 为假 “1” === “1” 为真
与 == 一样,以上所有内容都是正确的
当您使用两个等号==
时,它将检查相同的值。
if( '1' == 1 ) { echo 'yes'; }
上面的代码有效,因为它们具有相同的值。
但是,如果您使用三个等号===
,它将检查值和数据类型。
所以
if( '1' === 1 ) { /* this will not work */ }
这是因为'1'
数据类型为string
while 1
is aninteger
或 anumber
但是你可以做这样的事情 - 我认为:D
if( (integer) '1' === 1 ) { echo 'this works'; }
因为我们正在将数据类型更改'1'
为integer