Variable handling 函数
PHP Manual

empty

(PHP 4, PHP 5)

empty检查一个变量是否为空

说明

bool empty ( mixed $var )

如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""0"0"NULLFALSEarray()var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE

除了当变量没有置值时不产生警告之外, empty()(boolean) var 的反义词。参见转换为布尔值获取更多信息。

Example #1 empty()isset() 的一个简单比较。

<?php
$var 
0;

// 结果为 true,因为 $var 为空
if (empty($var)) {  
    echo 
'$var is either 0 or not set at all';
}

// 结果为 false,因为 $var 已设置
if (!isset($var)) { 
    echo 
'$var is not set at all';
}
?>

Note: 因为是一个语言构造器而不是一个函数,不能被 可变函数 调用。

Note:

empty() 只检测变量,检测任何非变量的东西都将导致解析错误。换句话说,后边的语句将不会起作用: empty(addslashes($name))

参见 isset()unset()array_key_exists()count()strlen()

参数

var

Variable to be checked

Note:

empty() only checks variables as anything else will result in a parse error. In other words, the following will not work: empty(trim($name)).

empty() is the opposite of (boolean) var, except that no warning is generated when the variable is not set.

返回值

Returns FALSE if var has a non-empty and non-zero value.

The following things are considered to be empty:

更新日志

版本 说明
5.4.0

Checking non-numeric offsets of strings returns TRUE.

5.0.0

Objects with no properties are no longer considered empty.

范例

Example #2 A simple empty() / isset() comparison.

<?php
$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 #3 empty() on String Offsets

PHP 5.4 changes how empty() behaves when passed string offsets.

<?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)

注释

Note: 因为是一个语言构造器而不是一个函数,不能被 可变函数 调用。

Note:

When using empty() on inaccessible object properties, the __isset() overloading method will be called, if declared.

参见


Variable handling 函数
PHP Manual