开发者

Checking if isset and is true?

Is there a function to check both

if 开发者_运维百科(isset($var) && $var) ?


The empty() function will do the job.

Use it with the not operator (!) to test "if not empty", i.e.

if(!empty($var)){

}


You may use the ?? operator as such:

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

What this does is checks if $var is set and keep it's value. If not, the expression evaluates as the second parameter, in this case false but could be use in other ways like:

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

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

More info here: https://lornajane.net/posts/2015/new-in-php-7-null-coalesce-operator


there you go. that should do it.

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


if (! empty($var))


It seems as though @phihag and @steveo225 are correct.

Determine whether a variable is considered to be empty. A variable is considered empty if it does not exist or if its value equals FALSE. empty() does not generate a warning if the variable does not exist.

No warning is generated if the variable does not exist. That means empty() is essentially the concise equivalent to !isset($var) || $var == false.

So, it seems !empty($var) would be the equivalent to isset() && $var == true.

http://us2.php.net/empty


Try the empty function: http://us2.php.net/empty


isset($a{0})

isset AND len is not 0 seems more reliable to me, if you run the following:

<?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'; }

?>


$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';
}


This way:

if (($var ?? false) == true) {
  
}


I am amazed at all these answers. The correct answer is simply 'no, there is no single function for this'. empty() tests for unset or false. So when you use !empty(), you test for NOT UNSET (set) and NOT FALSE. However, 'not false' is not the same as true. For example, the string 'carrots' is not false:

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

in fact your current solution also has this type problem

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

as does even this

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

in fact... if you want to do as you described exactly, you need:

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

I suppose the shortest valid way to test this case is :

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

But suppressing errors for something like this is pretty awful practice.


Don't know if an exact one already exists, but you could easily write a custom function to handle this.

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

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


Check if the variable is set, and true. Ignore warning message

if(@!empty($foo))
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜