Я пытаюсь создать многомерный массив с каждым вспомогательным массивом, представляющим строку, которую я хочу вставить в свою БД. Причина этого заключается в том, что я могу использовать функцию CodeIgniters batch_insert для добавления каждой строки в БД.
Я пытаюсь создать каждый дополнительный массив в цикле и вставить его в многомерный массив. Google предложил использовать array_merge, но после использования 'print_r' в многомерном массиве с приведенным ниже кодом отображается только последний подматрица.
Вот мой код:
$allplayerdata = array(); //MD 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);
Может ли кто-нибудь определить, где я ошибаюсь? Помощь приветствуется!
Это связано с тем, что array_merge
не подходит для этой ситуации. Так как все массивы $playerdata
имеют одинаковые ключи, значения переопределяются.
Вы хотите использовать array_push
для добавления в массив. Таким образом вы получите массив массивов $playerdata
.
array_push($allplayerdata, $playerdata);
Это эквивалентно добавлению элемента с синтаксисом квадратной скобки
$allplayerdata[] = $playerdata;
array_merge
– объединить один или несколько массивов array_push
– array_push
один или несколько элементов на конец массива Это добавит второй массив в первый массив: слияние – это нечто другое.
$allplayerdata[] = $playerdata;