isset和!empty之间有区别吗?如果我做这个双布尔检验,它是正确的还是多余的?有没有更短的方法来做同样的事情?
isset($vars[1]) AND !empty($vars[1])
isset和!empty之间有区别吗?如果我做这个双布尔检验,它是正确的还是多余的?有没有更短的方法来做同样的事情?
isset($vars[1]) AND !empty($vars[1])
当前回答
“Empty”:只对变量有效。对于不同的变量类型,空可以有不同的含义 (查看手册:http://php.net/manual/en/function.empty.php)。
isset:检查变量是否存在,检查值是否为true NULL或false。 可以通过调用“unset”来取消设置。再一次,检查手册。
使用任何一种都取决于您使用的变量类型。
我想说,两者都检查更安全,因为你首先检查的是变量是否存在,以及它是否真的为NULL或空。
其他回答
“Empty”:只对变量有效。对于不同的变量类型,空可以有不同的含义 (查看手册:http://php.net/manual/en/function.empty.php)。
isset:检查变量是否存在,检查值是否为true NULL或false。 可以通过调用“unset”来取消设置。再一次,检查手册。
使用任何一种都取决于您使用的变量类型。
我想说,两者都检查更安全,因为你首先检查的是变量是否存在,以及它是否真的为NULL或空。
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网站,引用empty()函数:
如果var具有非空和非零值,则返回FALSE。
知道这一点是件好事。换句话说,当使用empty()函数时,从NULL到0到" "的所有内容都将返回TRUE。
下面是isset()函数返回内容的描述:
如果var存在,返回TRUE;否则错误。
换句话说,只有不存在的变量(或严格为NULL值的变量)才会在isset()函数上返回FALSE。所有具有任何类型值的变量,无论是0还是空白文本字符串等,都将返回TRUE。
如果我们使用相同的页面添加/编辑通过提交按钮如下
<input type="hidden" value="<?echo $_GET['edit_id'];?>" name="edit_id">
那么我们就不应该用了
isset($_POST['edit_id'])
Bcoz edit_id是一直设置,无论是添加或编辑页面,而不是我们应该使用check下面的条件
!empty($_POST['edit_id'])