PHP中is_null"== NULL"和"=== NULL"之间的区别

Rak*_*kib 11 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";
}
//-----------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我收到以下回复:

is_NOT_null 
NULL stuff 
not NULL identity 
Run Code Online (Sandbox Code Playgroud)

有人可以帮助理解这三种检查NULL的方法之间的程序差异是什么?

xda*_*azz 16

is_null($a)和...一样$a === null.

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

为的差=====,读PHP类型比较表

$a === null只有这样$a才是真的null.

但是,对于==,下面也会返回true.

null == false
null == 0
null == array()
null == ""
Run Code Online (Sandbox Code Playgroud)