PHP中isset()与empty()函数的区别详解

isset()函数

功能:检测变量是否已设置并且非 NULL

TIPS

如果变量存在并且值不是 NULL 则返回 TRUE,否则返回 FALSE。

<?php
$var = '';
if (isset($var)) { // isset($var)结果为 TRUE
    echo "变量已经设置";
}

// 在后边的例子中,我们将使用 var_dump 输出 isset() 的返回值。
$a = "test";
$b = "anothertest";
var_dump(isset($a));      // TRUE
var_dump(isset($a, $b)); // TRUE

unset ($a); //释放给定的变量
var_dump(isset($a));     // FALSE
var_dump(isset($a, $b)); // FALSE
$foo = NULL;
var_dump(isset($foo));   // FALSE

$a = array ('test' => 1, 'hello' => NULL);
var_dump(isset($a['test']));            // TRUE
var_dump(isset($a['foo']));             // FALSE
var_dump(isset($a['hello']));           // FALSE
?>

empty()函数

功能:检查一个变量是否为空
TIPS
以下的东西被认为是空的:”” (空字符串)、0 (作为整数的0)、0.0 (作为浮点数的0)、”0″ (作为字符串的0)、NULL、FALSE、array() (一个空数组)、$var; (一个声明了,但是没有值的变量)

<?php
$var = 0;

// empty($var)为true
if (empty($var)) {
    echo '$var is either 0, empty, or not set at all';
}

// isset($var)为true
if (isset($var)) {
    echo '$var is set even though it is empty';
}
?>

WARING
isset()函数只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined()函数。

  1. 当要判断一个变量是否已经声明的时候可以使用isset()函数
  2. 当要判断一个变量是否已经赋予数据且不为空可以用empty()函数
  3. 当要判断一个变量存在且不为空,先isset()函数再用empty()函数