web-dev-qa-db-ja.com

ループ内で多次元配列に配列を追加する

各サブ配列がDBに挿入する行を表す多次元配列を生成しようとしています。これは、CodeIgnitersの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);

誰かが私が間違っている場所を見つけることができますか?ヘルプは大歓迎です!

19
Leopold Stotch

これは、array_mergeがこの状況に適した操作ではないためです。すべての$playerdata配列には同じキーがあるため、値はオーバーライドされます。


array_Pushを使用して配列に追加します。このようにして、$playerdata配列の配列を取得します。

array_Push($allplayerdata, $playerdata);

これは、角括弧構文で要素を追加するのと同等です

$allplayerdata[] = $playerdata;

33
Mark Biesheuvel

これにより、2番目の配列が最初の配列に追加されます。 マージ 何か違う。

$allplayerdata[] = $playerdata;
9
JK.