开发者

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 f开发者_运维知识库unction 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);
}
print_r($allplayerdata);

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


This is because array_merge is not the right operation for this situation. Since all the $playerdata arrays have the same keys, the values are overridden.


You want to use array_push to append to an array. This way you will get an array of $playerdata arrays.

array_push($allplayerdata, $playerdata);

Which is equivalent to adding an element with the square bracket syntax

$allplayerdata[] = $playerdata;

  • array_merge - Merge one or more arrays
  • array_push - Push one or more elements onto the end of array
  • Creating/modifying with square bracket syntax


This will add the second array to the first array: A merge is something different.

$allplayerdata[] = $playerdata;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜