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



我试图生成一个多维数组,每个子数组代表我想插入到我的DB的行。这样做的原因是,我可以使用codeigniter的batch_insert函数将每一行添加到DB。

我试图在循环中创建每个子数组并将其插入多维数组。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);

有谁能指出我错在哪里吗?感谢帮助!

这是因为array_merge不是适合这种情况的操作。因为所有的$playerdata数组都有相同的键,所以这些值被覆盖。


您想使用array_push追加到数组。这样您将得到一个$playerdata数组的数组。

array_push($allplayerdata, $playerdata);

相当于用方括号语法添加一个元素

$allplayerdata[] = $playerdata;

  • array_merge -合并一个或多个数组
  • array_push -将一个或多个元素压入数组
  • 的末尾
  • 用方括号语法创建/修改

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

$allplayerdata[] = $playerdata;

相关内容

  • 没有找到相关文章

最新更新