将数组添加到循环内的多维数组

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

任何人都可以发现我哪里出错了吗?感谢您的帮助!


答案 1

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


您希望 用于追加到数组。这样,您将获得一个数组数组。array_push$playerdata

array_push($allplayerdata, $playerdata);

这等效于添加带有方括号语法的元素

$allplayerdata[] = $playerdata;


答案 2

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

$allplayerdata[] = $playerdata;