PHP 中 empty() 函数的含义和用法
empty() 是 PHP 中用于检查变量是否为"空"的语言结构(不是函数),它比 isset() 检查得更严格。
基本含义
empty() 检查变量是否满足以下任一条件:
变量不存在(未声明)
变量值为
false变量值为
0或"0"变量值为空字符串
""变量值为空数组
[]变量值为
NULL
如果满足以上任一条件,empty() 返回 true,否则返回 false。
基本用法示例
1. 检查普通变量
var_dump(empty($undefinedVar)); // true (变量未定义)
var_dump(empty(null)); // true
var_dump(empty(false)); // true
var_dump(empty(0)); // true
var_dump(empty("0")); // true
var_dump(empty("")); // true
var_dump(empty([])); // true
var_dump(empty(1)); // false
var_dump(empty("hello")); // false
var_dump(empty(["a"])); // false2. 检查数组元素
$array = ['name' => '', 'age' => 0]; var_dump(empty($array['name'])); // true var_dump(empty($array['age'])); // true var_dump(empty($array['email'])); // true (元素不存在)
3. 检查对象属性
class User {
public $name = '';
private $age = 0;
}
$user = new User();
var_dump(empty($user->name)); // true
var_dump(empty($user->age)); // true (即使是私有属性也能检查)实际应用场景
1. 表单验证
if (!empty($_POST['username'])) {
// 用户名不为空才处理
$username = $_POST['username'];
} else {
echo "用户名不能为空";
}2. 配置项默认值设置
$config = [ 'debug' => false, // 'log_level' 未设置 ]; $debugMode = !empty($config['debug']); // false $logLevel = !empty($config['log_level']) ? $config['log_level'] : 'info'; // 'info'
3. 数据过滤
function filterInput($input) {
return !empty($input) ? htmlspecialchars($input) : '';
}注意事项
empty()对于未声明变量不会产生警告(与isset()相同)与
isset()不同,empty()不仅检查变量是否存在,还检查其值是否为"空"empty()只能用于变量检查,不能直接检查表达式结果
empty(trim($name)); // 错误用法,会产生解析错误 empty($var = 0); // 错误用法
对于对象属性,
empty()会调用__isset()魔术方法(如果存在)从 PHP 5.5 开始,
empty()支持表达式参数(如empty($a->b))
empty() 是 PHP 表单处理和变量检查中非常实用的工具,合理使用可以简化很多条件判断逻辑。