Когда я пытаюсь получить доступ к массиву по ключу, который не существует в этом массиве, php вызывает ошибку уведомления об ошибке «неопределенный индекс». Когда я пытаюсь сделать то же самое в строках, предупреждение «Недопустимое смещение строки» возникает. Это ожидаемое поведение, и я знаю, как с этим бороться.
Но когда я пробовал это по логическим или целым значениям, ничего не происходит:
ini_set('display_errors', 1); error_reporting(E_ALL); $var = false; var_dump($var['test']);
Я ожидаю увидеть некоторые сообщения об ошибках, но $var['test']
просто молча устанавливает значение NULL.
Итак, почему php разрешает доступ к логическому значению через ключ массива без каких-либо указаний на то, что вы делаете что-то неправильно? Фраза «доступ к логическому значению через ключ массива» звучит ужасно странно для меня, но вы можете сделать это в php.
Это печально, но это документированное поведение.
http://php.net/manual/en/language.types.string.php
Заметка:
Доступ к переменным других типов (не включая массивы или объекты, реализующие соответствующие интерфейсы) с использованием [] или {} молча возвращает NULL.