在php脚本中,我们经常要去判断一个变量是否已定义或者是否为空,就需要用到这些函数empty()、isset()、is_null()和其本身作为参数,下面小段程序做个简要比较
传入值为:' . $value . ''; if (!isset($value)) { echo 'isset()==false'; } if (empty($value)) { echo 'empty()==true'; } if (!$value) { echo 'self==false'; } if (is_null($value)) { echo 'is_null()==true'; } } ?> 输出结果: 传入值为: empty()==true self==false 传入值为:0 empty()==true self==false 传入值为:0 empty()==true self==false 传入值为: isset()==false empty()==true self==false is_null()==true 传入值为: empty()==true self==false 传入值为:Array empty()==true self==false
总结一:从结果中可以看出,""、0、"0"、NULL、FALSE、array()这几个中,empty()和“变量本身作为参数”结果一致,均作为“空”来处理,而isset()和is_null ()仅当是null时,才作为“空”来处理(值得注意的是false并不会被认为是空)
下面我们看下当一个变量未定义初始化时,这些函数返回的是什么
echo '传入值为:undefine'; if (!isset($value_undefine)) { echo 'isset()==false'; } if (empty($value_undefine)) { echo 'empty()==true'; } if (!$value_undefine) { echo 'self==false'; } if (is_null($value_undefine)) { echo 'is_null()==true'; } 输出结果: 传入值为:undefine isset()==false empty()==true (此处警告变量未定义) self==false (此处警告变量未定义) is_null()==true
总结二:由结果可看出,当变量未定义时,is_null()和“本身参数”是不允许作为参数判断的,虽然结果可以判断出来为“空”,建议不使用。
isset()和empty()可以正常判断出为"空"的.
1 2 3 4 5 6 7 8 9 | 最后总结: isset(),仅当null和未定义,返回false empty (), "" 、0、 "0" 、NULL、FALSE、 array (),未定义,均返回false 本身作为参数,与 empty ()一致,但接受未定义变量时,报警告 is_null (),仅判断是否为null,未定义报警告 |
http://www.cnblogs.com/huangzhen/archive/2011/08/21/2147808.html#3303118