(PHP 4, PHP 5, PHP 7)
empty – 检查一个变量是否为空
说明
empty
( [mixed](php7/language.pseudo-types) $var
) : bool
判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。
参数
var
待检查的变量
Note:
在 PHP 5.5 之前,empty() 仅支持变量;任何其他东西将会导致一个解析错误。换言之,下列代码不会生效: empty(trim($name))。
作为替代,应该使用trim($name) == false.
没有警告会产生,哪怕变量并不存在。
这意味着 empty() 本质上与 !isset($var) || $var == false 等价。
返回值
当var存在,并且是一个非空非零的值时返回 FALSE
否则返回 TRUE.
以下的东西被认为是空的:
"" (空字符串)
0 (作为整数的0)
0.0 (作为浮点数的0)
"0" (作为字符串的0)
NULL
FALSE
array() (一个空数组)
$var; (一个声明了,但是没有值的变量)
更新日志
版本
说明
5.5.0
empty() 现在支持表达式了,而不仅仅是变量。
5.4.0
检查非数字的字符串偏移量会返回 TRUE.
范例
Example #1
一个简单的 empty() 与 [isset()](php7/function.isset) 的比较。
$var = 0;
// Evaluates to true because $var is empty
if (empty($var)) {
echo '$var is either 0, empty, or not set at all';
}
// Evaluates as true because $var is set
if (isset($var)) {
echo '$var is set even though it is empty';
}
?>
Example #2 在字符串偏移量上使用empty()
PHP 5.4 修改了当传入的是字符串偏移量时, empty() 的行为
$expected_array_got_string = 'somestring';
var_dump(empty($expected_array_got_string['some_key']));
var_dump(empty($expected_array_got_string[0]));
var_dump(empty($expected_array_got_string['0']));
var_dump(empty($expected_array_got_string[0.5]));
var_dump(empty($expected_array_got_string['0.5']));
var_dump(empty($expected_array_got_string['0 Mostel']));
?>
以上例程在PHP 5.3中的输出:
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
以上例程在PHP 5.4中的输出:
bool(true)
bool(false)
bool(false)
bool(false)
bool(true)
bool(true)
注释
Note: 因为是一个语言构造器而不是一个函数,不能被
[可变函数](php7/functions.variable-functions) 调用。
Note:
当对一个不可见的对象属性使用 empty() 时,
[__isset()](php7/language.oop5.overloading)
方法如果存在的话,它将会被调用。
参见
[isset()](php7/function.isset) – 检测变量是否已设置并且非 NULL
[__isset()](php7/language.oop5.overloading)
[unset()](php7/function.unset) – 释放给定的变量
[array_key_exists()](php7/function.array-key-exists) – 检查数组里是否有指定的键名或索引
[count()](php7/function.count) – 计算数组中的单元数目,或对象中的属性个数
[strlen()](php7/function.strlen) – 获取字符串长度
[The type comparison tables](php7/types.comparisons)