(PHP 4, PHP 5)
empty — 检查一个变量是否为空
如果 var
是非空或非零的值,则
empty() 返回
FALSE
。换句话说,""、0、"0"、NULL
、FALSE
、array()、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:
NULL
FALSE
版本 | 说明 |
---|---|
5.4.0 |
Checking non-numeric offsets of strings returns |
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.