在PHP中isset()和empty()之间很容易混淆,它们都是用于测试变量的值,都返回一个布尔值。
empty
说明 empty — 检查一个变量是否为空
判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于false,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。 也就是:如果变量是空字符串,false,array(),NULL,“0”,0和未设置的变量,它将返回true
isset
说明 isset — 检测变量是否已设置并且非 null 检测变量是否设置,并且不是 null。 如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 null 的变量,将返回 false。同时要注意的是 null 字符("\0")并不等同于 PHP 的 null 常量。 如果一次传入多个参数,那么 isset() 只有在全部参数都以被设置时返回 true 计算过程从左至右,中途遇到没有设置的变量时就会立即停止。 简单来说 当变量不为null时才返回true。
对比:
- 当变量已定义且有值
$a = '123';
var_dump(empty($a));
var_dump(isset($a));
- 当变量未定义
var_dump(empty($a));
var_dump(isset($a));
- 当变量为null时
$a = null;
var_dump(empty($a));
var_dump(isset($a));
- 当变量被销毁时
$a = '123';
unset($a);
var_dump(empty($a));
var_dump(isset($a));
变量值 | isset | empty | if |
---|
‘’ | bool(true) | bool(true) | true | (未定义) | bool(true) | bool(false) | | NULL | bool(true) | bool(false) | false |
待补充…
|