“===”是什么意思?

我注意到有人使用PHP运算符===这是我无法理解的。 我已经用一个函数试了一下,它以疯狂的方式对应着。

这个操作符的定义是什么? 我甚至无法在PHP运算符的声明中find它。

 $a === $b (Identical) 

如果$a等于$b ,并且它们是相同types, $b TRUE 。 (在PHP 4中引入)

PHP文档

http://www.php.net/ternary

$ a == $ b如果$ a等于$ b,则等于TRUE,但(True == -1)仍然为True。

$ a === $ b如果$ a等于$ b,则它是相同的,并且它们是相同的types。

 > "5" == 5; True > "5" === 5; False 

你可以在这里阅读简短的总结:

$ a == $ b如果在玩杂耍之后$ a等于$ b,则等于TRUE。

$ a === $ b如果$ a等于$ b,则它是相同的,并且它们是相同的types。

在PHP中,您可以使用==运算符或===运算符比较两个值。 不同之处在于:

PHP是一种dynamic的解释型语言,对数据types并不严格。 这意味着,只要需要,语言本身就会尝试转换数据types。

 echo 4 + "2"; // output is 6 

输出是整数值6,因为+是PHP中的数字加法运算符,所以如果您向其提供其他数据types的操作数,PHP将首先将它们转换为适当的types(“2”将被转换为2),然后执行操作。

如果您使用==作为比较运算符,并使用两个可能处于不同数据types的操作数,则PHP会将第二个操作数types转换为第一个操作数types。 所以:

4 ==“4”// true

PHP将“4”转换为4,然后比较这些值。 在这种情况下,结果将是真实的。

如果您使用===作为比较运算符,PHP将不会尝试转换任何数据types。 所以如果操作数的types不同,那么它们是不一样的。

4 ===“4”// false

$x == $y如果$ x和$ y的值相同,则为真:

 $x = 1; //int type $y = "1"; //string type if ($x == $y) { // This will execute } 

$x === $y如果$ x和$ y的值相同,$ x和$ y的types相同, $x === $y TRUE:

 $x = 1; //int type $y = "1"; //string type if ($x === $y) { // This will not execute } 

你会看到许多dynamictypes的语言,而不仅仅是PHP。

==会尝试把它处理的东西转换成可以比较的types。

===会严格比较types和价值。

在任何dynamictypes的语言,你必须小心==,你可以得到一些有趣的错误。

三元===不太方便,但更安全。 为了比较,你应该总是给一些额外的想法,应该是===还是==

三等于符号===检查两个variables是否相同和相同的types。

对于PHP来说,零可以有很多不同的含义

  1. 它可以是一个布尔值false
  2. 它可能是一个空值
  3. 它可能真的是一个零

所以===被添加来确保types和值是一样的。

请参阅PHP中的Double和Triple等号运算符 ,我使用“PHP三等于运算符”进行search。

有一点说:

double = sign是一个比较,并testing左侧的variables/expression式/常量是否与右侧的variables/expression式/常量具有相同的值。

一个triple = sign是比较两个variables/ expresions /常量是否相等AND具有相同的types – 即两个都是string或者都是整数。

这也是一个例子来解释它。

“===”匹配variables中的值以及variables的数据types。