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

Когда я пытаюсь получить доступ к массиву по ключу, который не существует в этом массиве, 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.