在循环内向多维数组添加数组

时间:2011-07-31 20:37:02

标签: php arrays codeigniter multidimensional-array

我正在尝试生成一个多维数组,每个子数组表示我想要插入到我的数据库中的行。这样做的原因是我可以使用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);

有人能找到我错的地方吗?感谢帮助!

2 个答案:

答案 0 :(得分:32)

这是因为array_merge对于这种情况来说不是正确的操作。由于所有$playerdata数组都具有相同的键,因此会覆盖这些值。


您希望使用array_push附加到数组。这样,您将获得一组$playerdata数组。

array_push($allplayerdata, $playerdata);

这相当于添加带方括号语法的元素

$allplayerdata[] = $playerdata;

答案 1 :(得分:9)

这会将第二个数组添加到第一个数组: merge 是不同的。

$allplayerdata[] = $playerdata;