Проверьте, задано ли значение массива iset и имеет значение null

Как проверить переменную массива

$a = array('a'=>1, 'c'=>null);

установлен и имеет значение null.

function check($array, $key)
{
    if (isset($array[$key])) {
        if (is_null($array[$key])) {
            echo $key . ' is null';
        }
        echo $key . ' is set';
    }
}

check($a, 'a');
check($a, 'b');
check($a, 'c');

Возможно ли в PHP иметь функцию, которая будет проверять, является ли $a ['c'] пустой, и если существует $a ['b'] без ошибок "PHP Notice:..."?

Ответ 1

Используйте array_key_exists() вместо isset(), потому что isset() вернет false, если переменная null, тогда как array_key_exists() просто проверяет, существует ли ключ в массиве:

function check($array, $key)
{
    if(array_key_exists($key, $array)) {
        if (is_null($array[$key])) {
            echo $key . ' is null';
        } else {
            echo $key . ' is set';
        }
    }
}

Ответ 2

Вы можете передать его по ссылке:

function check(&$array, $key)
{
    if (isset($array[$key])) {
        if (is_null($array[$key])) {
            echo $key . ' is null';
        }
        echo $key . ' is set';
    }
}

check($a, 'a');
check($a, 'b');
check($a, 'c');

Не следует уведомлять

Но isset вернет false по нулевым значениям. Вместо этого вы можете попробовать array_key_exists