isset和!empty之间有区别吗?如果我做这个双布尔检验,它是正确的还是多余的?有没有更短的方法来做同样的事情?
isset($vars[1]) AND !empty($vars[1])
isset和!empty之间有区别吗?如果我做这个双布尔检验,它是正确的还是多余的?有没有更短的方法来做同样的事情?
isset($vars[1]) AND !empty($vars[1])
当前回答
这是不必要的。
如果变量不存在,则不生成警告。这意味着 Empty()本质上相当于!isset($var) || $var = = false。
php.net
其他回答
“Empty”:只对变量有效。对于不同的变量类型,空可以有不同的含义 (查看手册:http://php.net/manual/en/function.empty.php)。
isset:检查变量是否存在,检查值是否为true NULL或false。 可以通过调用“unset”来取消设置。再一次,检查手册。
使用任何一种都取决于您使用的变量类型。
我想说,两者都检查更安全,因为你首先检查的是变量是否存在,以及它是否真的为NULL或空。
这是不必要的。
如果变量不存在,则不生成警告。这意味着 Empty()本质上相当于!isset($var) || $var = = false。
php.net
$a = 0;
if (isset($a)) { //$a is set because it has some value ,eg:0
echo '$a has value';
}
if (!empty($a)) { //$a is empty because it has value 0
echo '$a is not empty';
} else {
echo '$a is empty';
}
公认的答案不正确。
isset()不等同于!empty()。
如果沿着这条路走下去,您将会产生一些相当令人不快且难以调试的错误。例如,试着运行下面的代码:
<?php
$s = '';
print "isset: '" . isset($s) . "'. ";
print "!empty: '" . !empty($s) . "'";
?>
https://3v4l.org/J4nBb
空只是检查是引用的变量/数组有一个值,如果你检查php文档(空),你会看到这个东西被认为是空的
* ""(空字符串) * 0(0为整数) * "0"(0作为字符串) *空 *假 * array()(空数组) * var $var;(声明了一个变量,但在类中没有值)
而isset检查变量是否为isset而不是null,这也可以在PHP文档中找到(isset)