Leopold Stotch Leopold Stotch - 2 years ago 108
PHP Question

Adding arrays to multi-dimensional array within loop

I am attempting to generate a multi-dimensional array with each sub array representing a row I want to insert into my DB. The reason for this is so I can use CodeIgniters batch_insert function to add each row to the DB.

I am attempting to create each sub array within a loop and insert it into a multidimensional array. Google suggested using array_merge, but after using 'print_r' on the multidimensional array with the code below, only the last sub-array is being displayed.

Here is my code:

$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);

Can anyone spot where I'm going wrong? Help is appreciated!

Answer Source

This is because you don't want to merge the arrays. Since the have the same keys, the values are overridden. I.e. array_merge creates a one dimensional array instead of a two dimensional


$allplayerdata[] = $playerdata;


array_push ($allplayerdata, $playerdata);

PHP.net: array_push

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download