Добавить значение в ассоциативный массив с foreach?

Решение найдено и проголосовало


Вот мой код:

//go through each question
foreach($file_data as $value) {
    //separate the string by pipes and place in variables
    list($title, $content, $date_posted) = explode('|', $value);

    //create an associative array for each input
    $file_data_array['title'] = $title;
    $file_data_array['content'] = $content;
    $file_data_array['date_posted'] = $date_posted;

}

Что происходит, так это то, что связанные значения продолжают стираться. Есть ли способ, которым я могу добавить значение в массив? Если нет, как еще я могу это сделать?

4 ответа

Решение

Вы можете добавить к $file_data_array массив, используя что-то вроде этого:

foreach($file_data as $value) {
    list($title, $content, $date_posted) = explode('|', $value);
    $item = array(
        'title' => $title, 
        'content' => $content, 
        'date_posted' => $date_posted
    );
    $file_data_array[] = $item;
}

(Временный $item переменной можно было избежать, делая объявление массива и влияние в конце $file_data_array в то же время)


Для получения дополнительной информации взгляните на следующий раздел руководства: Создание / изменение с использованием синтаксиса в квадратных скобках.

Вы хотите добавить ассоциативные массивы в $file_data_array?

Если так:

//go through each question
foreach($file_data as $value) {
    //separate the string by pipes and place in variables
    list($title, $content, $date_posted) = explode('|', $value);

    //create an associative array for each input
    $file_data_array[] = array(
        "title" => $title,
        "content" => $content,
        "date_posted" => $date_posted,
    );

}

Вам нужен дополнительный ключ.

//go through each question
$x=0;
foreach($file_data as $value) {
    //separate the string by pipes and place in variables
    list($title, $content, $date_posted) = explode('|', $value);

    //create an associative array for each input
    $file_data_array[$x]['title'] = $title;
    $file_data_array[$x]['content'] = $content;
    $file_data_array[$x]['date_posted'] = $date_posted;
    $x++;
}    

Попробуй это:

$file_data_array = array(
     'title'=>array(),
     'content'=>array(),
     'date_posted'=>array()
);
//go through each question
foreach($file_data as $value) {
    //separate the string by pipes and place in variables
    list($title, $content, $date_posted) = explode('|', $value);

    //create an associative array for each input
    $file_data_array['title'][] = $title;
    $file_data_array['content'][] = $content;
    $file_data_array['date_posted'][] = $date_posted;

}

ваш окончательный массив будет выглядеть примерно так:

$file_data_array = array(
   'title' => array ( 't1', 't2' ),
   'content' => array ( 'c1', 'c2' ),
   'date_posted' => array ( 'dp1', 'dp2' )
)

вот демонстрация этого:

http://codepad.org/jdFabrzE

Другие вопросы по тегам