isset的简写和!空

时间:2011-11-30 22:57:42

标签: php variables null

愚蠢的问题,我知道,但如果我不知道是否设置了变量$var,我应该使用

isset($var) && !empty($var)

检查其中是否有任何值,或

!empty($var)够了吗?如果$var在第二种情况下为空,会出现问题吗?

4 个答案:

答案 0 :(得分:9)

issetempty都是语言结构。并且empty()在内部首先进行isset检查,然后对其进行否定,或者也检查在布尔上下文中等于FALSE的值。

是的,!empty()就足够了。

答案 1 :(得分:2)

是的,您可以放弃isset()

  

empty()(boolean) var相反,但未设置变量时不会生成警告

您可以使用以下代码查看此内容:

error_reporting(E_ALL);

var_dump(empty($var));
bool(true)

(注意缺少未定义的变量警告)

答案 2 :(得分:2)

你应该使用isset(),因为如果$ var为0,则empty()将返回false。

<?php
$var = 0;

// Evaluates to true because $var is empty
if (empty($var)) {
    echo '$var is either 0, empty, or not set at all';
}

//Evaluates false because $var is empty
if(!empty($var)){

}

// Evaluates as true because $var is set
if (isset($var)) {
    echo '$var is set even though it is empty';
}
?>

答案 3 :(得分:1)

我认为你可以完全删除isset(),以防你使用empty(),因为empty()会检查变量是否也先设置

所以,毕竟使用

if (!empty($var)) {
    //isset and not empty
}