2014-09-09 3 views
11

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

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

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

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

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

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

+1

которое сообщение об ошибке Вам понравилось бы? – 2014-09-09 00:26:30

+0

@ Dagon Я ожидал «неопределенного индекса». На самом деле не имеет значения, какую ошибку я бы хотел. Мне просто интересно, почему вообще нет сообщения об ошибке. –

+0

На самом деле я протестировал это, '$ var = 123;' это происходит и на целых числах – Ghost

ответ

11

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

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

Примечание:

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