Ключ нулевой переменной равен null not error

У нас есть переменная, которая по какой-то причине считается массивом, но она имеет значение null.

$var = null

Мы пытаемся получить значение из этой переменной.

$value = $var['key']

Это не вызывает ошибки, моя интуиция заключается в том, что это будет. Вместо этого происходит то, что значение $теперь также равно null. Есть ли особая причина, по которой указанная выше строка не выдает ошибку?

Ответ 1

Существует "почти дубликат": Почему обращение к индексу массива по логическому значению не вызывает какой-либо ошибки?

код выглядит так:

$var = false;
$value = $var['key'];

и ответ: просто документ

Доступ к переменным других типов (не включая массивы или объекты, реализующие соответствующие интерфейсы) с использованием [] или {} молча возвращает NULL.

Итак, в этой строке (я говорю о вашем случае, $var = null, но с логическим будет одно и то же объяснение, просто замените NULL на boolean)

$var['key']

$var - это переменная тип NULL и доступ к переменной типа NULL (другой тип этого массива или объекта) с использованием [] молча возвращает NULL.

Ответ 2

Вы можете использовать этот вид резервного копирования

function _get($from, $key)
{
    if(is_null($from))
    {
        trigger_error('Trying to get value of null');
        return null;
    }
    return $from[$key];
}

Измените

$value = $var['key'];

to

$value = _get($var, 'key');