PHP: Check if variable exist but also if has a value equal to something PHP: Check if variable exist but also if has a value equal to something php php

PHP: Check if variable exist but also if has a value equal to something


Sadly that's the only way to do it. But there are approaches for dealing with larger arrays. For instance something like this:

$required = array('myvar', 'foo', 'bar', 'baz');$missing = array_diff($required, array_keys($_GET));

The variable $missing now contains a list of values that are required, but missing from the $_GET array. You can use the $missing array to display a message to the visitor.

Or you can use something like that:

$required = array('myvar', 'foo', 'bar', 'baz');$missing = array_diff($required, array_keys($_GET));foreach($missing as $m ) {    $_GET[$m] = null;}

Now each required element at least has a default value. You can now use if($_GET['myvar'] == 'something') without worrying that the key isn't set.

Update

One other way to clean up the code would be using a function that checks if the value is set.

function getValue($key) {    if (!isset($_GET[$key])) {        return false;    }    return $_GET[$key];}if (getValue('myvar') == 'something') {    // Do something}


If you're looking for a one-liner to check the value of a variable you're not sure is set yet, this works:

if ((isset($variable) ? $variable : null) == $value) { }

The only possible downside is that if you're testing for true/false - null will be interpreted as equal to false.


As of PHP7 you can use the Null Coalescing Operator ?? to avoid the double reference:

$_GET['myvar'] = 'hello';if (($_GET['myvar'] ?? '') == 'hello') {    echo "hello!";}

Output:

hello!

In general, the expression

$a ?? $b

is equivalent to

isset($a) ? $a : $b