为什么同时选中 isset() 和 !empty()

php
2022-08-30 06:05:59

和 之间是否有区别。如果我执行此双重布尔检查,则这种方式是否正确还是冗余?有没有更短的方法做同样的事情?isset!empty

isset($vars[1]) AND !empty($vars[1])

答案 1

这完全是多余的。 或多或少是 的简写,类似于 。即 做相反的事情加上对值真实性的额外检查。empty!isset($foo) || !$foo!emptyisset($foo) && $fooemptyisset

换句话说,与 相同,但如果变量不存在,则不会引发警告。这就是这个函数的要点:做一个布尔比较,而不必担心变量被设置。empty!$foo

手册是这样说的:

empty()与 相反,不同之处在于未设置变量时不会生成警告。(boolean) var

您可以在此处直接使用。!empty($vars[1])


答案 2

isset()测试变量是否已设置且未设置为 null:

http://us.php.net/manual/en/function.isset.php

empty()当变量设置为某些值时,可以返回 true:

http://us.php.net/manual/en/function.empty.php

若要演示这一点,请尝试以下代码,其中 $the_var 未赋值,设置为 0,设置为 1。

<?php

#$the_var = 0;

if (isset($the_var)) {
  echo "set";
} else {
  echo "not set";
}

echo "\n";

if (empty($the_var)) {
  echo "empty";
} else {
  echo "not empty";
}
?>

推荐