57

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

这个运算符的定义是什么?我什至在 PHP 运算符的声明中都找不到它。

4

10 回答 10

70
$a === $b     (Identical)      

如果$a等于,则为TRUE$b,并且它们属于同一类型。(在 PHP 4 中引入)

PHP 文档

于 2009-07-13T06:40:23.643 回答
59

http://www.php.net/ternary

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

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

> "5" == 5;
True
> "5" === 5;
False
于 2009-07-13T06:42:08.647 回答
12

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

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

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

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

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

4 == "4" // 真

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

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

4 === "4" // 假

于 2009-07-13T07:16:07.580 回答
12

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

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

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

于 2009-07-13T06:41:43.627 回答
7

$x == $y is TRUE if the value of the $x and $y are same:

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

$x === $y TRUE if the value of the $x and $y are same and type of $x and $y are same:

$x = 1; //int type
$y = "1"; //string type
if ($x === $y) {
    // This will not execute
}
于 2014-04-23T20:55:41.583 回答
4

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

==将尝试将它正在处理的任何内容转换为它可以比较的类型。

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

在任何动态类型语言中,您必须小心使用 ==,您可能会遇到一些有趣的错误。

三元===不太方便,但更安全。对于比较,您应该始终考虑是否应该=====

于 2009-08-19T07:31:27.533 回答
3

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

于 2009-07-13T06:40:39.603 回答
1

请参阅我在“PHP 三等号运算符”上进行谷歌搜索时获得的PHP 中的双和三等号运算符。

有一次它说:

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

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

它还举了一个例子来解释它。

于 2009-07-13T06:44:54.010 回答
1

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

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

所以添加 === 以确保类型和值相同。

于 2009-07-13T06:55:46.717 回答
0

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

于 2009-07-13T07:50:43.610 回答