"==="是什么意思?

55 php operators comparison-operators identity-operator

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

这个运算符的定义是什么?我甚至无法在PHP运算符的声明中找到它.

Tim*_*ter 68

$a === $b     (Identical)      
Run Code Online (Sandbox Code Playgroud)

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

PHP文档

  • 还要注意,==也被称为"让我看看我能做什么"的操作符,因为它会产生诸如"100"=="1e2"和0 ==的珍珠.一". (13认同)
  • 我认为他的意思是"1"=="一".==运算符就像在向php说他被允许解析en处理左侧和右侧表达式,使得值变得相等.===就像说,在这里做一个二进制比较. (4认同)
  • 作为一个注释,这个相等运算符也出现在Javascript中,我相信Perl.这很常见. (3认同)
  • @Ksempac:第二个字符串“one”不会解析为数字 1,而是数字 0,因此它们是相等的。 (2认同)

Dyk*_*kam 58

http://www.php.net/ternary

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

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

> "5" == 5;
True
> "5" === 5;
False
Run Code Online (Sandbox Code Playgroud)


Art*_*ger 12

你可以在这里阅读,简短摘要:

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

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

  • 在php.net你有99%的问题答案. (2认同)

far*_*zad 10

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

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

echo 4 + "2"; // output is 6
Run Code Online (Sandbox Code Playgroud)

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

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

4 =="4"//是的

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

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

4 ==="4"//假


ani*_*k4e 6

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

$x = 1; //int type
$y = "1"; //string type
if ($x == $y) {
    // This will execute
}
Run Code Online (Sandbox Code Playgroud)

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

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