Не точно. Это зависит от установленного вами значения. Вы просто не можете получить доступ к 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" не приводит к каноническому ответу или его примеру.

Ответы на вопрос(3)

Ваш ответ на вопрос