检查一个变量是否为空 empty

(PHP 4, PHP 5, PHP 7)

empty — 检查一个变量是否为空

说明

empty(mixed $var): bool

判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。

参数

var

待检查的变量

在 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.

淘宝 adsense 商品推荐

正版 Google AdSense实战宝典:用谷歌广告联盟出海赚美元 第2版 seo搜索引擎优化 广告营销 网站运营书籍 AdSense从入门到精通

价格:39.5元

范例

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

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

淘宝 云主机 商品推荐

远程电脑出租E3E5物理双路服务器租用云主机渲染模拟器虚拟机多开

价格:19元

注释

因为是一个语言构造器而不是一个函数,不能被可变函数调用。
当对一个不可见的对象属性使用empty()时,__isset()方法如果存在的话,它将会被调用。

参见

isset()- 检测变量是否已设置并且非 NULL

__isset()

unset()- 释放给定的变量

array_key_exists()- 检查数组里是否有指定的键名或索引

count()- 计算数组中的单元数目,或对象中的属性个数

strlen()- 获取字符串长度

The type comparison tables