Php/docs/function.empty
empty
(PHP 4, PHP 5, PHP 7)
empty — 检查一个变量是否为空
说明
empty
( mixed $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() 的比较。
<?php$var = 0;// Evaluates to true because $var is emptyif (empty($var)) { echo '$var is either 0, empty, or not set at all';}// Evaluates as true because $var is setif (isset($var)) { echo '$var is set even though it is empty';}?>
Example #2 在字符串偏移量上使用empty()
PHP 5.4 修改了当传入的是字符串偏移量时, empty() 的行为
<?php$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)
参见
- isset() - 检测变量是否已设置并且非 null
- __isset()
- unset() - 释放给定的变量
- array_key_exists() - 检查数组里是否有指定的键名或索引
- count() - 计算数组中的单元数目,或对象中的属性个数
- strlen() - 获取字符串长度
- The type comparison tables