Добавление массивов в многомерный массив внутри цикла
Я пытаюсь создать многомерный массив с каждым вспомогательным массивом, представляющим строку, которую я хочу вставить в свою БД. Причина этого заключается в том, что я могу использовать функцию CodeIgniters batch_insert для добавления каждой строки в БД.
Я пытаюсь создать каждый дополнительный массив в цикле и вставить его в многомерный массив. Google предложил использовать array_merge, но после использования 'print_r' в многомерном массиве с приведенным ниже кодом отображается только последний подматрица.
Вот мой код:
$allplayerdata = array(); //M-D container array
for ($i = 1; $i <= 11; $i++)
{
$playerdata = array(
'player_id' => $this->input->post('player' . $i),
'goals' => $this->input->post('playergoals' . $i),
'player_num' => $i,
'fixture_id' => $this->input->post('fixture_id')
);
//Merge each player row into same array to allow for batch insert
$allplayerdata = array_merge($allplayerdata, $playerdata);
}
print_r($allplayerdata);
Может ли кто-нибудь увидеть, где я ошибаюсь? Помощь приветствуется!
Ответы
Ответ 1
Это потому, что array_merge
не подходит для этой ситуации. Поскольку все массивы $playerdata
имеют одинаковые ключи, значения переопределяются.
Вы хотите использовать array_push
для добавления в массив. Таким образом вы получите массив массивов $playerdata
.
array_push($allplayerdata, $playerdata);
Что эквивалентно добавлению элемента с синтаксисом квадратной скобки
$allplayerdata[] = $playerdata;
Ответ 2
Это добавит второй массив в первый массив: A merge - это нечто другое.
$allplayerdata[] = $playerdata;