我试图生成一个多维数组,每个子数组代表我想插入到我的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;