“===”是什么意思?

时间:2009-07-13 06:39:01

标签: php operators comparison-operators identity-operator

我注意到有人使用PHP操作符===,我无法理解。我已经尝试了一个函数,它以疯狂的方式对应。

此运营商的定义是什么?我甚至无法在PHP运算符的声明中找到它。

10 个答案:

答案 0 :(得分:65)

$a === $b     (Identical)      
     如果$a等于$b,则

TRUE ,并且它们属于同一类型。 (在PHP 4中介绍)

PHP Docs

答案 1 :(得分:56)

http://www.php.net/ternary

  

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

     

$ a === $ b如果$ a等于$ b,则相同为TRUE,且它们属于同一类型。

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

答案 2 :(得分:12)

您可以阅读here,简短摘要:

  

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

     

$ a === $ b如果$ a等于$ b,则相同为TRUE,且它们属于同一类型。

答案 3 :(得分:9)

在PHP中,您可以使用==运算符或===运算符比较两个值。区别在于:

PHP是一种动态的解释语言,对数据类型并不严格。这意味着语言本身会在需要时尝试转换数据类型。

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

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

如果使用==作为具有两个可能位于不同数据类型的操作数的比较运算符,PHP将把第二个操作数类型转换为第一个操作数类型。所以:

4 ==“4”// true

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

如果使用===作为比较运算符,PHP将不会尝试转换任何数据类型。因此,如果操作数的类型不同,那么它们就不相同了。

4 ===“4”//假

答案 4 :(得分:6)

如果$ x和$ y的值相同,则

$x == $y为TRUE:

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

$x === $y如果$ x和$ y的值相同且$ x和$ y的类型相同,则为TRUE:

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

答案 5 :(得分:4)

您将在许多动态类型语言中看到此运算符,而不仅仅是PHP。

==会尝试将其处理的内容转换为可以比较的类型。

===将严格比较类型和值。

在任何动态类型语言中你都要小心==,你可以得到一些有趣的错误。

三元===不太方便,但更安全。为了进行比较,您应该总是考虑一下它是===还是==

答案 6 :(得分:3)

  

三等号===检查看   两个变量是否相等且类型相同。

答案 7 :(得分:1)

请参阅 Double and Triple equals operator in PHP ,我在谷歌搜索“PHP三等于运算符”。

有一次它说:

  

double =符号是一个比较,并测试左边的变量/ expression / constant是否与右边的变量/ expression / constant具有相同的值。

     

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

它也给出了一个解释它的例子。

答案 8 :(得分:1)

对于PHP,零可以有许多不同的含义

  1. 它可以是布尔值假
  2. 它可以是空值
  3. 它可能真的是零
  4. 因此添加===以确保类型和值相同。

答案 9 :(得分:0)

“===”匹配变量中的值以及变量的数据类型。