Добавление массивов в многомерный массив внутри цикла

Я пытаюсь создать многомерный массив с каждым вспомогательным массивом, представляющим строку, которую я хочу вставить в свою БД. Причина этого заключается в том, что я могу использовать функцию 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_pusharray_push один или несколько элементов на конец массива
  • Создание / изменение с помощью синтаксиса с квадратной скобкой

Это добавит второй массив в первый массив: слияние – это нечто другое.

 $allplayerdata[] = $playerdata;