У нас есть переменная, которая по какой-то причине считается массивом, но она имеет значение null.
$var = null
Мы пытаемся получить значение из этой переменной.
$value = $var['key']
Это не порождает ошибку, моя интуиция заключается в том, что она будет. Вместо этого происходит то, что значение $ теперь также равно null. Есть ли особая причина, по которой указанная выше строка не вызывает ошибку?
Существует «почти дубликат»: почему обращение к индексу массива по логическому значению не вызывает какой-либо ошибки?
код выглядит так:
$var = false; $value = $var['key'];
и ответ – это просто документ
Доступ к переменным других типов (не включая массивы или объекты, реализующие соответствующие интерфейсы) с использованием [] или {} молча возвращает NULL.
Итак, в этой строке (я говорю о вашем случае, $ var = null, но с булевым будет одно и то же объяснение, просто замените NULL на boolean)
$var['key']
$ var – это переменная типа NULL , а доступ к переменной типа NULL (другой тип этого массива или объекта) с использованием [] молча возвращает NULL.
Вы можете использовать этот вид резервного
function _get($from, $key) { if(is_null($from)) { trigger_error('Trying to get value of null'); return null; } return $from[$key]; }
+ Изменить
$value = $var['key'];
в
$value = _get($var, 'key');