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

Когда я пытаюсь получить доступ к массиву по ключу, который не существует в этом массиве, php будет вызывать ошибку уведомления "undefined index". Когда я пытаюсь сделать то же самое в строках, предупреждение "Недопустимое смещение строки" возникает. Это ожидаемое поведение, и я знаю, как с этим бороться.

Но когда я пробовал это по логическим или целым значениям, ничего не происходит:

ini_set('display_errors', 1);
error_reporting(E_ALL);

$var = false;
var_dump($var['test']);

Я ожидаю увидеть некоторые сообщения об ошибках, но $var['test'] просто устанавливает значение NULL.

Итак, почему php разрешает доступ к логическому значению с помощью ключа массива без каких-либо указаний на то, что вы делаете что-то неправильно? Фраза "доступ к логическому значению через ключ массива" звучит ужасно странно для меня, но вы можете сделать это в php.

Ответ 1

Это печально, но это документированное поведение.

http://php.net/manual/en/language.types.string.php

Примечание:

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