参靠官方文档
当一个变量没有定义,或变量的值等于false的时候,empty($val)返回true;
相当于如下定义
<?php
function empty($var) {
return !isset($var) || $var == false;
}
以下值被认为是 FALSE
:
- 布尔值
FALSE
本身 - 整型值 0(零)
- 浮点型值 0.0(零)
- 空字符串,以及字符串 "0"
- 不包括任何元素的数组
- 不包括任何成员变量的对象(仅 PHP 4.0 适用)
- 特殊类型 NULL(包括尚未赋值的变量)
- 从空标记生成的 SimpleXML 对象
值的注意的是,在php.5.5以前,参数只能是变量,之后参数可以是表达式了
测试
<?php
$vars = array('0' => 0, '""' => '', '"0"' => '0', 'false' => false,
'null' => null, 'array()' => array());
foreach($vars as $key => $var) {
if(empty($var)) {
echo $key." is empty\n";
}else{
echo $key," is not empty\n";
}
}
foreach($vars as $k1 => $v1) {
foreach($vars as $k2 => $v2) {
if($v1 != $v2) {
echo "$k1 != $k2\n";
}
}
}
结果
0 is empty
"" is empty
"0" is empty
false is empty
null is empty
array() is empty
0 != array()
"" != "0"
"" != array()
"0" != ""
"0" != null
"0" != array()
null != "0"
array() != 0
array() != ""
array() != "0"