Подтвердить что ты не робот

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

//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 - массив данных с динамическим размером.

4b9b3361

Ответ 1

Я думаю, что вы хотите $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);

Ответ 2

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

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

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

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

Ответ 3

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

$data = array();

затем в вашем цикле:

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

Ответ 4

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

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

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

array_push($data,$question);

Ответ 5

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

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

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

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

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