ZetCode

PHP empty 关键字

最后修改于 2025 年 4 月 16 日

PHP `empty` 关键字是一个语言结构,用于检查变量是否被视为“空”。它通常用于表单验证和变量检查。`empty` 检查在多种情况下返回 `true`。

基本定义

`empty` 结构判断一个变量是否为空。如果一个变量不存在或其值等于 `false`,则该变量被视为为空。

`empty` 对以下情况返回 `true`:空字符串、0、0.0、“0”、null、false、包含零个元素的数组或未声明的变量。它不是一个函数,而是一个语言结构。

语法:`empty($var)`。与 `isset` 不同,`empty` 不会为未定义变量生成警告。它经常与表单数据一起使用。

检查空字符串

此示例使用 `empty` 关键字演示了如何检查空字符串。

empty_string.php
<?php

declare(strict_types=1);

$username = "";

if (empty($username)) {
    echo "Username cannot be empty.";
} else {
    echo "Username is valid.";
}

代码检查 `$username` 是否为空。空字符串在 `empty` 中评估为 `true`。这对于需要填写字段的表单验证很有用。`else` 块处理非空情况。

检查零值

此示例显示了 `empty` 如何处理各种零值。

zero_values.php
<?php

declare(strict_types=1);

$count = 0;
$price = 0.0;
$code = "0";

if (empty($count)) {
    echo "Count is empty (zero).";
}

if (empty($price)) {
    echo "Price is empty (0.0).";
}

if (empty($code)) {
    echo "Code is empty ('0').";
}

代码演示了 0、0.0 和 "0" 都被评估为空。在验证数字输入时,这一点很重要。请注意,字符串 "0.0" 不为空。

检查 Null 值

此示例演示了 `empty` 对 null 变量的行为。

null_check.php
<?php

declare(strict_types=1);

$user = null;

if (empty($user)) {
    echo "User is not set or is null.";
} else {
    echo "User exists.";
}

代码使用 `empty` 检查 null 变量。Null 值始终返回 `true`。这在使用可能为 null 的数据库结果时很有用。对于任何非 null 值,将执行 `else` 块。

检查数组

此示例显示了如何将 `empty` 与数组变量一起使用。

array_check.php
<?php

declare(strict_types=1);

$cart = [];

if (empty($cart)) {
    echo "Your cart is empty.";
} else {
    echo "You have items in your cart.";
}

代码检查数组是否为空。空数组在 `empty` 中返回 `true`。这在处理购物车或列表时很常见。请注意,数组键不影响 `empty` 检查。

检查未定义变量

此示例演示了 `empty` 对未定义变量的行为。

undefined_var.php
<?php

declare(strict_types=1);

if (empty($undefinedVar)) {
    echo "Variable is undefined or empty.";
} else {
    echo "Variable has a value.";
}

代码使用 `empty` 检查未定义变量。与 `isset()` 不同,`empty` 不会为未定义变量生成警告。这使得它在检查可能不存在的变量时更安全。

表单验证示例

此示例展示了使用 `empty` 进行的实际表单验证。

form_validation.php
<?php

declare(strict_types=1);

$name = $_POST['name'] ?? '';
$email = $_POST['email'] ?? '';

if (empty($name) || empty($email)) {
    echo "Both name and email are required fields.";
} else {
    echo "Form submitted successfully!";
}

代码使用 `empty` 检查表单输入。Null 合并运算符 (??) 提供默认的空字符串。这可以防止未定义索引通知,同时仍然捕获空提交。两个字段都必须非空。

与 isset 结合使用

此示例演示了如何将 `empty` 与 `isset` 结合以进行彻底检查。

isset_empty.php
<?php

declare(strict_types=1);

$config = [];

if (isset($config['timeout']) && !empty($config['timeout'])) {
    echo "Timeout is set to: " . $config['timeout'];
} else {
    echo "Using default timeout.";
}

代码首先使用 `isset` 检查键是否存在,然后检查它是否非空。这种两步检查在配置处理中很常见。它可防止未定义索引错误,同时确保有意义的值。

最佳实践

来源

PHP empty() 文档

本教程通过实际示例介绍了 PHP 的 `empty` 关键字,展示了它在各种场景下用于检查空值。

作者

我叫 Jan Bodnar,是一位充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教学编程方面拥有十多年的经验。

列出 所有 PHP 教程