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