可能重复:
php == vs === operator
我有以下代码片段,对我来说没有意义为什么会以3种不同的方式评估NULL。将变量$uploaded_filenames_array
视为UNKNOWN - 我们不知道它仍然是数组还是NULL。这就是我们要检查的内容。
//-----------------------------------------------
if (is_null($uploaded_filenames_array)){
echo "is_null";
}
else{
echo "is_NOT_null";
}
//-----------------------------------------------
if ($uploaded_filenames_array == NULL){
echo "NULL stuff";
}
else{
echo "not NULL stuff";
}
//-----------------------------------------------
if ($uploaded_filenames_array === NULL){
echo "NULL identity";
}
else{
echo "not NULL identity";
}
//-----------------------------------------------
我收到以下回复:
is_NOT_null
NULL stuff
not NULL identity
有人可以帮助理解这3种检查NULL的方法之间的程序差异吗?
答案 0 :(得分:16)
is_null($a)
与$a === null
相同。
($a === null
比is_null($a)
快一点,用于保存一个函数调用,但没关系,只需选择你喜欢的样式。)
对于===
和==
的差异,请阅读PHP type comparison tables
$a === null
仅在$a
为null
时才为真。
但对于==
,以下内容也会返回true
。
null == false
null == 0
null == array()
null == ""
答案 1 :(得分:3)
您应该阅读此http://php.net/manual/en/language.operators.comparison.php。也无需使用is_null
功能仅检查NULL
。 ===
更快......
答案 2 :(得分:1)
==
检查值是否相等,例如:
>> "123" == 123
<< true
===
检查值&amp;类型是相同的,例如:
>> "123" === 123
<< false
答案 3 :(得分:1)
===
运算符测试相同的值和相同的TYPE。空字符串可能会计算为null,但它不是null
类型 - 因此会失败。
==
运算符基本上检查它们是否几乎相同 - 通过它,将值计算为相同的值。为空,这将评估为null,因此失败。
is_null
函数进行了相当彻底的检查 - 更像是===
运算符。