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

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;

【讨论】:

我认为您应该澄清合并替换具有相同索引的元素。这样会更有帮助

以上是关于在循环内将数组添加到多维数组的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 创建多维数组

将多维数组添加到其他多维数组的子数组中

如何从 C# 中的嵌套循环写入多维数组?

循环多维数组以生成谷歌图表的多维数组

如何理解JS多维数组

带有嵌套for循环的Javascript多维数组-无法正常工作