是否有检查两者的功能
if (isset($var) && $var)
?
答案 0 :(得分:42)
答案 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
。
答案 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))