Добавление элемента в ассоциативный массив

//go through each question foreach($file_data as $value) { //separate the string by pipes and place in variables list($category, $question) = explode('|', $value); //place in assoc array $data = array($category => $question); print_r($data); } 

Это не работает, поскольку оно заменяет значение данных. Как я могу добавить это ассоциативное значение для каждого цикла? $file_data – это массив данных с динамическим размером.

Я думаю, вы хотите $data[$category] = $question;

Или, если вам нужен массив, который сопоставляет категории с массивом вопросов:

 $data = array(); foreach($file_data as $value) { list($category, $question) = explode('|', $value, 2); if(!isset($data[$category])) { $data[$category] = array(); } $data[$category][] = $question; } print_r($data); 

Вы можете просто сделать это

 $data += array($category => $question); 

Если вы работаете на php 5.4+

 $data += [$category => $question]; //here was incorrect bracket 

перед циклом:

 $data = array(); 

затем в вашей петле:

 $data[] = array($catagory => $question); 

Я знаю, что это старый вопрос, но вы можете использовать:

 array_push($data, array($category => $question); 

Это приведет array к концу вашего текущего array . Или, если вы просто пытаетесь добавить отдельные значения в конец вашего массива, а не больше массивов, вы можете использовать это:

 array_push($data,$question); 

Для тех, кому также необходимо добавить в 2d ассоциативный массив, вы также можете использовать ответ, указанный выше, и использовать код, подобный этому

  $data[$category]["test"] = $question 

вы можете вызвать его (чтобы проверить результат:

 echo $data[$category]["test"]; 

который должен печатать $ question