Добавление элемента в ассоциативный массив
//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
- массив данных с динамическим размером.
Ответы
Ответ 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