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)是有明显区别的。


posted @ 2013-04-13 21:55  3wmao  阅读(219)  评论(0编辑  收藏  举报