检查是否设置并且是真的?

时间:2011-03-08 21:21:27

标签: php

是否有检查两者的功能

if (isset($var) && $var)

11 个答案:

答案 0 :(得分:42)

empty() function将完成这项工作。

与not运算符(!)一起使用来测试“if not empty”,即

if(!empty($var)){

}

答案 1 :(得分:7)

你去吧。应该这样做。

if (isset($var) && $var)

答案 2 :(得分:4)

你可以用??算子如此:

if($var ?? false){
   ...
}

这样做是检查$var是否已设置并保持其值。如果没有,表达式将计算为第二个参数,在本例中为false但可以在其他方式使用,如:

// $a is not set
$b = 16;

echo $a ?? 2; // outputs 2
echo $a ?? $b ?? 7; // outputs 16

更多信息: https://lornajane.net/posts/2015/new-in-php-7-null-coalesce-operator

答案 3 :(得分:3)

似乎@phihag和@ steveo225是正确的。

  

确定变量是否为空。变量是   如果它不存在或其值等于FALSE,则视为空。   如果变量不存在,empty()不会生成警告。

     

如果变量不存在,则不会生成警告。这意味着   empty()基本上简洁等同于!isset($var) || $var   == false

因此,!empty($var)似乎等同于isset() && $var == true

http://us2.php.net/empty

答案 4 :(得分:2)

答案 5 :(得分:0)

不知道是否已存在确切的一个,但您可以轻松编写自定义函数来处理此问题。

function isset_and_true($var) {
    return (isset($var) && $var == true) ? true : false;
}

if (isset_and_true($a)) {
    print "It's set!";
}

答案 6 :(得分:0)

尝试empty功能: http://us2.php.net/empty

答案 7 :(得分:0)

isset($a{0})

isset AND len不是0对我来说似乎更可靠,如果你运行以下内容:

<?php
$a=$_REQUEST['a'];

if (isset($a{0})) { // Returns "It's 0!!" when test.php?a=0
//if (!empty($a)) { // Returns "It's empty!!" when test.php?a=0
    echo 'It\'s '.$a;
} else { echo 'It\'s empty'; }

?>

答案 8 :(得分:0)

$a = new stdClass;

$a->var_false = false;
$a->var_true = true;

if ($a->notSetVar ?? false) {
    echo 'not_set';
}

if ($a->var_true ?? false) {
    echo 'var_true';
}

if ($a->var_false ?? false) {
    echo 'var_false';
}

答案 9 :(得分:-1)

我对所有这些答案感到惊讶。正确的答案就是“不,对此没有单一功能”。 empty()测试是否为set或false。因此,当您使用!empty()时,将测试NOT UNSET(设置)和NOT FALSE。但是,“ not false”与true不同。例如,字符串“ carrots”不是false:

$var = 'carrots'; if (!empty($var)){print 1;} //prints 1

实际上您当前的解决方案也存在这种类型的问题

$var = 'carrots'; if (isset($var) && $var){print 1;} //prints 1

甚至如此

$var = '1.03'; if (isset($var) && $var == true){print 1;} //prints 1

实际上...如果您想按照自己的描述进行操作,则需要:

$var = 'carrots'; if (isset($var) && $var === true){print 1;} //Note the 3 Equals //doesn't print 1

我想测试这种情况的最短有效方法是:

if (@$var === true){ print 1;}

但是抑制此类错误是非常糟糕的做法。

答案 10 :(得分:-2)

检查变量是否已设置,为true。忽略警告消息

if(@!empty($foo))