- 1
- 2
- 3
- 4
$a = null;
var_dump($a, $a[0], $a); // NULL, NULL, NULL // what the fuck?
$a[0] = null;
var_dump($a); // array(0 => NULL)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+154
$a = null;
var_dump($a, $a[0], $a); // NULL, NULL, NULL // what the fuck?
$a[0] = null;
var_dump($a); // array(0 => NULL)
"PHP и type juggling", том третий. При этом на первый вызов $a[0] не ругается, будто при приведении NULL к пустому массиву в нем появляется нулевой элемент.
bormand 09.09.2014 08:16 # +1
Во второй строке, оно, походу, ничего и не конвертит. Просто оператор [] на null'е всегда молча возвращает null.
А вот по третьей - да, интересно. null превращается в свежий array(). Видимо для автосоздания массивов подходит и неопределенная переменная и null (если написать $x['foo'][4] = 42 - пых сам запилит все необходимые уровни).
bormand 09.09.2014 08:26 # +1
Про null молчат, но, походу, он тоже прокатит. Да и отсутствующие переменные тоже читаются как null... If $arr doesn't exist yet, it will be created, so this is also an alternative way to create an array.
Fike 09.09.2014 08:23 # 0
Думаю, что конвертит, но не сохраняет. Array access в пхп реально существует только там, где его написали, т.е. в массивах, строках и объектах.
bormand 09.09.2014 08:25 # 0
С них станется случай с null'ом обработать отдельно.
Fike 09.09.2014 23:50 # 0
inkanus-gray 09.09.2014 19:12 # +1
Elvenfighter 09.09.2014 09:22 # +2
http://ideone.com/feHLxm