“===”是什么意思?
我注意到有人使用PHP运算符===
这是我无法理解的。 我已经用一个函数试了一下,它以疯狂的方式对应着。
这个操作符的定义是什么? 我甚至无法在PHP运算符的声明中find它。
$a === $b (Identical)
如果
$a
等于$b
,并且它们是相同types,$b
TRUE 。 (在PHP 4中引入)
PHP文档
$ 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来说,零可以有很多不同的含义
- 它可以是一个布尔值false
- 它可能是一个空值
- 它可能真的是一个零
所以===被添加来确保types和值是一样的。
请参阅PHP中的Double和Triple等号运算符 ,我使用“PHP三等于运算符”进行search。
有一点说:
double = sign是一个比较,并testing左侧的variables/expression式/常量是否与右侧的variables/expression式/常量具有相同的值。
一个triple = sign是比较两个variables/ expresions /常量是否相等AND具有相同的types – 即两个都是string或者都是整数。
这也是一个例子来解释它。
“===”匹配variables中的值以及variables的数据types。