我注意到有人使用===
我无法理解的 PHP 运算符。我用一个函数试过它,它以疯狂的方式对应。
这个运算符的定义是什么?我什至在 PHP 运算符的声明中都找不到它。
我注意到有人使用===
我无法理解的 PHP 运算符。我用一个函数试过它,它以疯狂的方式对应。
这个运算符的定义是什么?我什至在 PHP 运算符的声明中都找不到它。
$a === $b (Identical)
如果
$a
等于,则为TRUE$b
,并且它们属于同一类型。(在 PHP 4 中引入)
如果 $a 等于 $b,则 $a == $b 等于 TRUE,但 (True == -1) 仍然为 True。
$a === $b 如果 $a 等于 $b 并且它们属于同一类型,则相同 TRUE。
> "5" == 5;
True
> "5" === 5;
False
在 PHP 中,您可以使用 == 运算符或 === 运算符比较两个值。区别在于:
PHP 是一种动态的解释型语言,对数据类型不严格。这意味着语言本身会在需要时尝试转换数据类型。
echo 4 + "2"; // output is 6
输出是整数值 6,因为+
是 PHP 中的数值加法运算符,所以如果你给它提供其他数据类型的操作数,PHP 会先将它们转换为合适的类型(“2”会转换为 2)然后执行操作。
如果您使用 == 作为比较运算符,其中两个操作数可能属于不同的数据类型,PHP 会将第二个操作数类型转换为第一个操作数类型。所以:
4 == "4" // 真
PHP 将“4”转换为 4,然后比较这些值。在这种情况下,结果将为真。
如果您使用 === 作为比较运算符,PHP 将不会尝试转换任何数据类型。因此,如果操作数的类型不同,那么它们就不相同。
4 === "4" // 假
你可以在这里阅读,简短的总结:
$a == $b 等于 TRUE 如果在类型杂耍之后 $a 等于 $b。
$a === $b 如果 $a 等于 $b 并且它们属于同一类型,则相同 TRUE。
$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
}
您将在许多动态类型语言中看到此运算符,而不仅仅是 PHP。
==
将尝试将它正在处理的任何内容转换为它可以比较的类型。
===
将严格比较类型和值。
在任何动态类型语言中,您必须小心使用 ==,您可能会遇到一些有趣的错误。
三元===
不太方便,但更安全。对于比较,您应该始终考虑是否应该===
或==
三等号 === 检查两个变量是否相等且类型相同。
请参阅我在“PHP 三等号运算符”上进行谷歌搜索时获得的PHP 中的双和三等号运算符。
有一次它说:
双 = 符号是一种比较,用于测试左侧的变量/表达式/常量是否与右侧的变量/表达式/常量具有相同的值。
三重 = 符号是比较两个变量/表达式/常量是否相等并且具有相同类型 - 即两者都是字符串或两者都是整数。
它还举了一个例子来解释它。
对于 PHP,零可以有很多不同的含义
所以添加 === 以确保类型和值相同。
"===" 匹配变量中的值以及变量的数据类型。