isset和!empty之间有区别吗?如果我做这个双布尔检验,它是正确的还是多余的?有没有更短的方法来做同样的事情?

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

当前回答

公认的答案不正确。

isset()不等同于!empty()。

如果沿着这条路走下去,您将会产生一些相当令人不快且难以调试的错误。例如,试着运行下面的代码:

<?php

$s = '';

print "isset: '" . isset($s) . "'. ";
print "!empty: '" . !empty($s) . "'";

?>

https://3v4l.org/J4nBb

其他回答

公认的答案不正确。

isset()不等同于!empty()。

如果沿着这条路走下去,您将会产生一些相当令人不快且难以调试的错误。例如,试着运行下面的代码:

<?php

$s = '';

print "isset: '" . isset($s) . "'. ";
print "!empty: '" . !empty($s) . "'";

?>

https://3v4l.org/J4nBb

如果我们使用相同的页面添加/编辑通过提交按钮如下

<input type="hidden" value="<?echo $_GET['edit_id'];?>" name="edit_id">

那么我们就不应该用了

isset($_POST['edit_id'])

Bcoz edit_id是一直设置,无论是添加或编辑页面,而不是我们应该使用check下面的条件

!empty($_POST['edit_id'])

Isset()测试变量是否已设置且不为空:

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";
}
?>

这是不必要的。

如果变量不存在,则不生成警告。这意味着 Empty()本质上相当于!isset($var) || $var = = false。

php.net

空只是检查是引用的变量/数组有一个值,如果你检查php文档(空),你会看到这个东西被认为是空的

* ""(空字符串) * 0(0为整数) * "0"(0作为字符串) *空 *假 * array()(空数组) * var $var;(声明了一个变量,但在类中没有值)

而isset检查变量是否为isset而不是null,这也可以在PHP文档中找到(isset)