php中isset , is_null ,empty ,boolean 的异同
//$bb未定义 var_dump(is_null($bb)); var_dump(empty($bb)); var_dump(!(boolean)($bb)); var_dump(!isset($bb));
//bool(true) bool(true) bool(true) bool(true)
echo "<br/>"; $aa; var_dump(is_null($aa)); var_dump(empty($aa)); var_dump(!(boolean)($aa)); var_dump(!isset($aa));
//bool(true) bool(true) bool(true) bool(true)
echo "<br/>"; $cc = null; var_dump(is_null($cc)); var_dump(empty($cc)); var_dump(!(boolean)($cc)); var_dump(!isset($cc));
//bool(true) bool(true) bool(true) bool(true)
echo "<br/>"; $dd = 0; var_dump(is_null($dd)); var_dump(empty($dd)); var_dump(!(boolean)($dd)); var_dump(!isset($dd));
//bool(false) bool(true) bool(true) bool(false)
echo "<br/>"; class mao { } $obj = new mao(); var_dump(is_null($obj)); var_dump(empty($obj)); var_dump(!(boolean)($obj)); var_dump(!isset($obj));
//bool(false) bool(false) bool(false) bool(false)
echo "<br/>"; $arr = array(); var_dump(is_null($arr)); var_dump(empty($arr)); var_dump(!(boolean)($arr)); var_dump(!isset($arr));
//bool(false) bool(true) bool(true) bool(false)
//测试使用的为php5.4
由以上可以得出
1,当一个变量未定义,定义了但未初始化,定义了初始化为null的时候三者的结果相同
2,is_null 仅仅只是在变量未定义,定义了但未初始化,定义了初始化为null的时候返回true。(php中将定义了但未初始化的变量默认的初始化为null)
3,empty可以当作boolean的反值。(在php4.0的时候空对象的boolean值为FALSE
,之后为true,现在一般使用5.3,所以记住空对象的boolean值为true。要与空数组明显区分)
4,(重点)当判断一个的一个变量为0的时候,或者为空数组时isset 与 empty(boolean)是有明显区别的。