📜  区别 empty() 和 isset() - PHP (1)

📅  最后修改于: 2023-12-03 15:22:47.949000             🧑  作者: Mango

区别 empty() 和 isset() - PHP

在PHP编程中,经常用到empty()函数和isset()函数。这两个函数看起来有些相似,都用于检查变量是否为空。但它们有不同的作用和用法。

empty()函数

empty()函数用于检测一个变量是否为“空值”,其中“空值”包括以下情况:

  • 0(作为整型值的情况)
  • “”(空字符串)
  • null
  • false
  • array()(空数组)
  • var $var; (声明但未初始化的类属性)

如果变量不存在或者其值为上述情况之一,则empty()函数返回true。

下面是一个例子:

$var = "";
if (empty($var)) {
    echo "变量为空或者未定义";
} else {
    echo "变量不为空";
}

运行结果为:

变量为空或者未定义
isset()函数

isset()函数用于检测一个变量是否已设置,并且不是null。如果一个变量已设置,并且其值不是null,则isset()函数返回true。

下面是一个例子:

$var = "Hello World!";
if (isset($var)) {
    echo "变量已设置。";
} else {
    echo "变量未设置。";
}

运行结果为:

变量已设置。
区别
  • empty()函数检验的是一个变量是否为“空值”,而isset()函数检验的是一个变量是否已设置。
  • 如果变量不存在时,empty()函数不会报错而isset()函数会报错。例如:
if (empty($nonexistent_variable)) {
    echo "变量不存在或者未定义";
}

这段代码不会报错,因为empty()函数只是检测变量是否存在,并不会尝试访问该变量的值。但如果使用isset()函数进行相同的操作,会出现以下错误:

Notice: Undefined variable: nonexistent_variable in /path/to/file.php on line 3

因为isset()函数不仅检测变量是否存在,还尝试访问该变量的值,所以当变量不存在时,会引发一个“未定义变量”的警告。

  • 对于值为0的变量,empty()函数返回true,而isset()函数返回true。例如:
$var = 0;
if (empty($var)) {
    echo "变量为空或者未定义";
} else {
    echo "变量不为空";
}

if (isset($var)) {
    echo "变量已设置。";
} else {
    echo "变量未设置。";
}

这段代码的运行结果为:

变量为空或者未定义
变量已设置。
  • 对于非空字符串变量,empty()函数返回false,而isset()函数返回true。例如:
$var = "Hello World!";
if (empty($var)) {
    echo "变量为空或者未定义";
} else {
    echo "变量不为空";
}

if (isset($var)) {
    echo "变量已设置。";
} else {
    echo "变量未设置。";
}

这段代码的运行结果为:

变量不为空
变量已设置。