Добавить значение в ассоциативный массив с 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' )
)
вот демонстрация этого: