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