【问题标题】: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);

谁能发现我哪里出错了?感谢您的帮助!

【问题讨论】:

    标签: php arrays codeigniter multidimensional-array


    【解决方案1】:

    这是因为array_merge 不适合这种情况。由于所有$playerdata 数组都具有相同的键,因此值将被覆盖。


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

    array_push($allplayerdata, $playerdata);
    

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

    $allplayerdata[] = $playerdata;
    

    【讨论】:

      【解决方案2】:

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

      $allplayerdata[] = $playerdata;

      【讨论】:

      • 我认为您应该澄清合并替换具有相同索引的元素。这样会更有帮助
      猜你喜欢
      • 2016-02-09
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      相关资源
      最近更新 更多