55 php operators comparison-operators identity-operator
我注意到有人使用PHP操作符===,我无法理解.我已经尝试了一个功能,它以疯狂的方式对应.
这个运算符的定义是什么?我甚至无法在PHP运算符的声明中找到它.
Tim*_*ter 68
Run Code Online (Sandbox Code Playgroud)$a === $b (Identical)如果
$a等于$b,则为TRUE,它们属于同一类型.(在PHP 4中引入)
Dyk*_*kam 58
$ 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)
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"//假
$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)