Ключ нулевой переменной равен 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');