跳到主要内容

PHP isset() 和 empty() 区别?

参考答案:

在 PHP 中,isset()empty() 是两个常用的函数,用于检查变量是否已设置或是否为空。虽然它们在某些情况下可能看起来相似,但它们实际上有不同的用途和行为。

  1. isset()

isset() 函数用于检查变量是否已设置并且非 NULL。它返回一个布尔值,如果变量存在并且不为 NULL,则返回 true,否则返回 false

示例:

$var = '';

if (isset($var)) {
    echo "Variable is set.";
} else {
    echo "Variable is not set.";
}
// 输出: Variable is set.

在这个例子中,$var 已经被设置(即使它的值为空字符串),所以 isset($var) 返回 true

  1. empty()

empty() 函数用于检查一个变量是否为空。一个变量被认为是“空”的,如果它不存在,或者它的值等同于 false。这包括:

  • "" (一个空字符串)
  • 0 (作为整数的0)
  • 0.0 (作为浮点数的0)
  • "0" (一个包含0的字符串)
  • NULL
  • FALSE
  • array() (一个空数组)
  • $var; (一个声明了但没有值的变量)

示例:

$var = '';

if (empty($var)) {
    echo "Variable is empty.";
} else {
    echo "Variable is not empty.";
}
// 输出: Variable is empty.

在这个例子中,$var 的值为空字符串,所以 empty($var) 返回 true

区别

  • isset() 只检查变量是否已设置并且不为 NULL。它不关心变量的值是什么。
  • empty() 检查变量是否存在,并且其值是否等同于“空”。它考虑更多的情况,如空字符串、0、NULL 等。

通常,当你只关心变量是否已设置时,可以使用 isset()。而当你关心变量是否存在并且其值是否有效时,可以使用 empty()。但请注意,对于某些情况(如检查数组元素是否存在),你可能需要结合使用 isset() 和其他方法。