14

可能重复:
php == vs === 运算符

我有以下代码片段,这对我来说没有意义,为什么会以 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

4 回答 4

19

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

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

和的区别=====请阅读PHP 类型对照表

$a === null仅当$ais时为真null

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

null == false
null == 0
null == array()
null == ""
于 2012-08-28T09:34:50.863 回答
3

您应该阅读此http://php.net/manual/en/language.operators.comparison.php。也无需使用is_null功能仅检查NULL. ===是比较快的...

于 2012-08-28T09:32:42.863 回答
1

==检查是否相等,例如:

>> "123" == 123
<< true

===检查值和类型是否相等,例如:

>> "123" === 123
<< false
于 2012-08-28T09:32:07.120 回答
1

===操作员测试相同的值和相同的类型。空字符串可能评估为 null,但它不是该null类型 - 因此失败。

==操作员基本上检查它们是否几乎相同 - 通过这种方式,对相同的值进行评估。为空,这将评估为 null,因此失败。

is_null功能进行了相当彻底的检查 - 更像===操作员。

于 2012-08-28T09:35:41.670 回答