PHP检查NULL值

时间:2014-02-12 15:22:38

标签: php

出于好奇(并且有点必要):

if(! is_null($var)){
     //do something
}

以上陈述是否与

相同
if($var != NULL){
//do something
}

3 个答案:

答案 0 :(得分:3)

不,他们不一样。

is_null函数也会对类型进行处理。

示例:

<?php
    var_dump(is_null(0)); // bool(false) 
    var_dump(0 == NULL); // bool(true) 
    var_dump(0 === NULL); // bool(false)

所以在你的情况下

if(! is_null($var)){
     //do something
}

相同
if($var !== NULL){
    //do something
}

答案 1 :(得分:1)

是的,这几乎是正确的,您可以自己测试一下:

    $emptyvar1 = null;
    $emptyvar2="";
    if(is_null($emptyvar1) && $emptyvar1 == NULL){
        echo "1";
    }
    if(is_null($emptyvar2)){
        echo "2";
    }
    if($emptyvar2 == null){
        echo "3";
    }
    if($emptyvar2 === null){
        echo "4";
    }

这将打印1和3。 因为如果你只使用2次=,则空字符串等于null 如果你使用3次=它不是。

===还检查对象类型 ==仅检查值

答案 2 :(得分:1)

我不确定你究竟在测试什么,但是在:

a)$ var = NULL; 两个语句都没有触发,

b)$ var = 0; is_null触发器和

c)$ var =''; is_null触发器也是如此。

所以上述陈述肯定不会得出同样的结论。

亲眼看看:

echo 'testing NULL case<br>';
$var = NULL;
if(! is_null($var)){
    echo 'var is_null<br>';
}
if($var != NULL){
    echo 'var != null<br>';
}

echo 'testing 0 case<br>';
$var = 0;
if(! is_null($var)){
    echo 'var is_null<br>';
}
if($var != NULL){
    echo 'var != null<br>';
}

echo 'testing empty string case<br>';
$var = '';
if(! is_null($var)){
    echo 'var is_null<br>';
}
if($var != NULL){
    echo 'var != null<br>';
}

此输出

testing NULL case
testing 0 case
var is_null
testing empty string case
var is_null