Не точно. Это зависит от установленного вами значения. Вы просто не можете получить доступ к int как к массивам.
ление. Первоначально я хотел выяснить, есть ли в PHP эта функция. Это было потеряно в фокусе ответов на скалярной проблеме. Пожалуйста, посмотрите этот новый вопрос вместо:"Есть ли в PHP автовификация?" Этот вопрос оставлен здесь для справки.
Согласно ВикипедииPHP не имеет автовивификации, но этот код работает:
$test['a']['b'] = 1;
$test['a']['c'] = 1;
$test['b']['b'] = 1;
$test['b']['c'] = 1;
var_dump($test);
Выход:
array
'a' =>
array
'b' => int 1
'c' => int 1
'b' =>
array
'b' => int 1
'c' => int 1
Я обнаружил, что этот код тоже работает:
$test['a'][4] = 1;
$test['b'][4]['f'] = 3;
Но добавление этой строки вызывает предупреждение («Предупреждение: невозможно использовать скалярное значение в качестве массива»)
$test['a'][4]['f'] = 3;
Что тут происходит? Почему происходит сбой при добавлении ассоциативного элемента после индекса? Это «настоящая» Perl-подобная автовивификация, или какая-то ее вариация, или что-то еще?
Изменить: о, я вижу ошибку со скаляром сейчас, упс! Эти работы, как и ожидалось:
$test['a'][4]['a'] = 1;
$test['a'][4]['b'] = 2;
$test['a'][5]['c'] = 3;
$test['a'][8]['d'] = 4;
Итак, у php есть автовификация? Поиск в Google по запросу "php autovivification" не приводит к каноническому ответу или его примеру.