在PHP is_null“== NULL”和“=== NULL”之间的差值[重复](differen

2019-07-31 05:22发布

可能重复:
PHP == VS ===运营商

我有下面的代码片段,并没有任何意义,我为什么会中的空3分不同的方式进行评估。 考虑变量$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 

有人可以帮助理解什么是检查NULL的这3种方式的纲领性区别?

Answer 1:

is_null($a)是一样的$a === null

$a === null比Bit快is_null($a)用于保存一个函数调用,但没关系,只要选择你喜欢的风格。)

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

$a === null是真实的只有$anull

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

null == false
null == 0
null == array()
null == ""


Answer 2:

你应该阅读这http://php.net/manual/en/language.operators.comparison.php 。 也没有必要使用is_null功能检查只能在NULL===比较快...



Answer 3:

===操作试验相同的值和相同的类型。 空字符串可能计算为NULL,但它是不是null型-因此失败。

==操作符基本检查,看看他们是几乎相同的-通过,做评估,以相同的值。 是空的,这将评估为空,因此失败。

is_null功能做了相当全面的检查-更喜欢===运营商。



Answer 4:

==检查该等于例如:

>> "123" == 123
<< true

===检查该值类型是相等的。例如:

>> "123" === 123
<< false


文章来源: difference between is_null “== NULL” and “=== NULL” in PHP [duplicate]