我正在尝试生成一个多维数组,每个子数组表示我想要插入到我的数据库中的行。这样做的原因是我可以使用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);
有人能找到我错的地方吗?感谢帮助!
答案 0 :(得分:32)
这是因为array_merge
对于这种情况来说不是正确的操作。由于所有$playerdata
数组都具有相同的键,因此会覆盖这些值。
您希望使用array_push
附加到数组。这样,您将获得一组$playerdata
数组。
array_push($allplayerdata, $playerdata);
这相当于添加带方括号语法的元素
$allplayerdata[] = $playerdata;
答案 1 :(得分:9)
这会将第二个数组添加到第一个数组: merge 是不同的。
$allplayerdata[] = $playerdata;