在循环内将数组添加到多维数组
Posted
技术标签:
【中文标题】在循环内将数组添加到多维数组【英文标题】:Adding arrays to multi-dimensional array within loop 【发布时间】:2011-10-17 01:19:23 【问题描述】:我正在尝试生成一个多维数组,每个子数组代表我要插入数据库的行。这样做的原因是我可以使用 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;
array_merge
- Merge one or more arrays
array_push
- Push one or more elements onto the end of array
Creating/modifying with square bracket syntax
【讨论】:
【参考方案2】:这会将第二个数组添加到第一个数组中:merge 是不同的。
$allplayerdata[] = $playerdata;
【讨论】:
我认为您应该澄清合并替换具有相同索引的元素。这样会更有帮助以上是关于在循环内将数组添加到多维数组的主要内容,如果未能解决你的问题,请参考以下文章