forecho

把生命浪费在美好的事物上

PHP - Isset 与 Empty 的区别

2014年09月05日

当一个变量没有声明的时候,第一个 if 会报错

1
2
3
4
5
6
7
8
9
if ($a) {
   echo $a.'1'.PHP_EOL;
}
if (!empty($a)) {
   echo $a.'2'.PHP_EOL;
}
if (isset($a)) {
   echo $a.'3'.PHP_EOL;
}

当一个变量声明了,并且值为空的时候,isset 会通过,此处输出结果是 a3

1
2
3
4
5
6
7
8
9
10
$a='';
if ($a) {
   echo $a.'1'.PHP_EOL;
}
if (!empty($a)) {
   echo $a.'2'.PHP_EOL;
}
if (isset($a)) {
   echo $a.'3'.PHP_EOL;
}

当一个变量声明了,并且有值的时候,三个都会通过,此处输出结果是 a1 a2 a3

1
2
3
4
5
6
7
8
9
10
$a='a';
if ($a) {
   echo $a.'1'.PHP_EOL;
}
if (!empty($a)) {
   echo $a.'2'.PHP_EOL;
}
if (isset($a)) {
   echo $a.'3'.PHP_EOL;
}

总结:

  1. 结论就是从数据库查询出结果的时候,如果要做判断就直接做判断或者用 empty 去做判断,如果用 isset 去做判断就毫无意义。
  2. empty 可以判断变量是否存在并且值是否为空,所以尽量用 empty 做判断。
  3. isset 只能判断变量是否声明。