Intereting Posts
Как я должен служить изображению с Laravel? Регулярное выражение – перемещение содержимого между тегами XML mysql query PHP: Я хочу, чтобы определенные элементы были первыми, а затем отсортировать остальные элементы Каков наилучший способ разбить строку на массив символов Юникода в PHP? Удалить несколько строк с PDO и флажками с помощью подготовленных операторов? Как изменить формат по умолчанию на created_at и update_at значение laravel Память PHP исчерпана CodeIgniter / PHP Active Record не будет увеличивать целое число telnet-соединение с использованием PHP Eloquent groupBy делает «SQLSTATE » с действительным SQL-запросом в Laravel 5.3 Как зарегистрировать пользователя из приложения Symfony 2 с помощью внутренних обработчиков Как удалить ключ и его значение из ассоциативного массива? Работа с японскими именами файлов в PHP 5.3 и Windows Vista? Вложенные ресурсы MySQL (сводные таблицы) для просмотра / обновления / управления MySQL Получение пользователей Реальный IP-адрес с использованием PHP

Доступ к php-массиву по логическому

Я недавно наткнулся на следующее:

<? $d=false; var_dump($d[123]); ?> 

который дал NULL , но (неожиданно для меня) без какого-либо уведомления, например

 <? $d=array(); var_dump($d[123]); ?> 

действительно производит хорошо известную

 Notice: Uninitialized string offset: 123 in - on line 1 

Что здесь происходит? Есть ли какая-либо документация по этому поведению?

Solutions Collecting From Web of "Доступ к php-массиву по логическому"

Отсюда :

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

Наверное, это то, что вы бы назвали неопределенным поведением.

Это имеет смысл, поскольку логическое значение не может иметь смещение.

 error_reporting(E_ALL); $d = TRUE; var_dump($d[0]); 

Это также создает NULL (если FALSE принудительно вводится в пустую строку, имеет смысл, что TRUE будет 1 ).

Плюс, что мезе сказал 🙂

Быстрый просмотр исходного кода показывает, что это ожидаемое поведение. Но не спрашивайте меня, почему они это сделали …