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



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

333   5  
PHP

5 ответов:

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

прежде чем цикл for :

$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

Comments

    Ничего не найдено.