PHP中is_null“== NULL”和“=== NULL”之间的区别

时间:2012-08-28 09:29:41

标签: php null identity equality

  

可能重复:
  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的方法之间的程序差异吗?

4 个答案:

答案 0 :(得分:16)

is_null($a)$a === null相同。

$a === nullis_null($a)快一点,用于保存一个函数调用,但没关系,只需选择你喜欢的样式。)

对于=====的差异,请阅读PHP type comparison tables

$a === null仅在$anull时才为真。

但对于==,以下内容也会返回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函数进行了相当彻底的检查 - 更像是===运算符。