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


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

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

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

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

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

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

Author: Samel Vhatargh, 2014-09-09

1 answers

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

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

Примечание:

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

 12
Author: sectus, 2014-09-09 01:15:23