[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: NULL'ы, массивы и доступ к элементам
volter9
PHP не показывает Notic'ы если переменная или значение является NULL'ом при попытки получить доступ к элементам массива (заметил это когда функция могла возвратить null или массив). Нашел это интересным, может кому нибудь будет интересно или пригодится:

$var = null;

// Не вызовет: "Notice: Undefined Index 0"
var_dump($var[0][1][2][3]['route']); // NULL


Раньше никогда не встречался с таким явлением. Тоже самое распространяется на булев. Кто нибудь встречался с этим?

P.S.: теперь на говнокоде
P.S.S.: для кого то может быть и баян, не претендую на оригинальность

_____________
Мой блог
ApuktaChehov
Я тоже не встречался с таким. Хотя PHP слаботипизированный язык, я стараюсь, что бы мои типы данных всегда соответствовали средства, которые с ними работают.
Если я собираюсь использовать переменную в виде массива, то принудительно помещаю в нее пустой массив.

Вообще, учитывая многие факторы, я обошел стороной многие проблемы связанные с типами данных в PHP. Достаточно порядка в коде, и все будет работать.
А если создавать переменную со значением, например false, а потом обращаюсь к ней как к массиву - это идиотизм.

Автору спасибо, хотя вчера я на говнокоде это видел.

_____________
sergeiss
Цитата (ApuktaChehov @ 6.02.2015 - 11:27)
Достаточно порядка в коде, и все будет работать.

Золотые слова smile.gif Вообще, лучше всегда инициализировать переменные. Тем типом данных, с каким они будут использоваться потом. Особенно с массивами это важно бывает.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
ApuktaChehov
sergeiss - я об этом же и говорил. )

_____________
volter9
Цитата (ApuktaChehov @ 6.02.2015 - 11:27)
а потом обращаюсь к ней как к массиву - это идиотизм

Так то я согласен, но обращению к null'у или fals'у тут не на пустом месте. Писал тесты, функция 100% должна была вернуть массив, но вернула null :D (функция кэшировала кое какие ресурсы, по этому отдавала неверные значение, в последствие чего один из if'ов вернул false по цепочки вызовов, ну а там дальше null).
Вот так и застал этот интересный случай.

Нашел еще один прикол:
Можно создавать "невидимые" константы, точнее константы которые нельзя напрямую достать:
define('SUPER INVINCIBLE CONSTANT', 42);

echo SUPER INVINCIBLE CONSTANT; // error
echo constant('SUPER INVINCIBLE CONSTANT'); // 42


_____________
Мой блог
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.