先来看看php的 PHP type comparison tables:
可参考http://php.net/manual/en/types.comparisons.php
NULL:
当你在你的脚本中写下这样一行代码
$myvariable; //此处你想定义一个变量,但未赋值。会有Notice: Undefined variable echo $myvariable + 3; //使用这个变量出现:Notice: Undefined variable: myvariable in如果将其改写成:
$myvariable = NULL; echo $myvariable + 3; //这样就不会有问题了所以得出在你的脚本在使用一个变量时最好赋一个默认值,如果你不想,就可以将NULL赋给变量,表示这个变量已经定义但没有值,属于NULL类型。
$myvar = NULL; var_dump(is_null($myvar)); // TRUE $myvar1; var_dump(is_null($myvar1)); // TRUE Notice: Undefined variable $num = 520; unset($num); var_dump(is_null($num)); //TRUE Notice: Undefined variable var_dump(is_null($some_undefined_var)); //TRUE Notice: Undefined variable $myvar = 0; is_null($myvar); // FALSE $myvar = FALSE; is_null($myvar); // FALSE $myvar = ''; is_null($myvar); // FALSE
$myvar = NULL; isset($myvar); // FALSE 当一个变量被赋值为NULL时,就表示这个变量没有值 $myvar = 0; isset($myvar); // TRUE $myvar = FALSE; isset($myvar); // TRUE $myvar = ''; isset($myvar); // TRUE isset($some_undefined_var); // FALSE Undefined variable可以看出isset()着重检测一个 变量是否设置和这个变量是否有具体的值,当变量满足这两种情况时isset()返回TRUE
$myvar = NULL; empty($myvar); // TRUE $myvar = 0; empty($myvar); // TRUE $myvar = FALSE; empty($myvar); // TRUE $myvar = ''; empty($myvar); // TRUE empty($some_undefined_var); // TRUEempty()为TRUE的情况,若变量不存在,或者变量存在且其值为""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象,则返回 TURE。