配列 1 のキーの値に基づいてマージしたい 2 つの配列があります。以下の例では、game_list のキー (id) に基づいて game_modes を games_list に入れます。
ゲームでいっぱいのテーブルから引き出された配列 1:
$games_list = array(
0 => array(
'id' => 23,
'name' => 'Call of Duty: Modern Warfare 3'
),
2 => array(
'id' => 1,
'name' => 'Call of Duty: Black Ops'
)
);
ゲームモードでいっぱいのテーブルから引き出された配列 2:
$game_modes = array(
0 => array(
'id' => 1,
'game_id' => 1,
'description' => 'Capture the Flag'
),
1 => array(
'id' => 2,
'game_id' => 1,
'description => 'Domination'
),
2 => array(
'id' => 3,
'game_id' => 23,
'description' => 'Kill Confirmed'
)
);
結果を次のようにしたいと思います。
$games_list = array(
0 => array(
'id' => 23,
'name' => 'Call of Duty: Modern Warfare 3'
'modes' => array(
array(
'id' => 3,
'game_id' => 23,
'description' => 'Kill Confirmed'
)
)
),
2 => array(
'id' => 1,
'name' => 'Call of Duty: Black Ops'
'modes'=> array(
0 => array(
'id' => 1,
'game_id' => 1,
'description' => 'Capture the Flag'
),
1 => array(
'id' => 2,
'game_id' => 1,
'description => 'Domination'
)
)
)
);
追加情報として、私が現在取り組んでいるサイトのデータベースには現在 71 のゲームがあり、各ゲームには任意の数のゲーム モードを設定できます。
これで、一連の for ループを簡単に実行して、この質問をまとめて回避することができました。現時点では、データベースに大量のゲーム モードを入力していませんが、常に追加し続けています。時間が経つにつれて、常に指数関数的に多くのループを実行すると、最終的にページの読み込み速度が遅くなります。
時間をかけてこのデータを memcache に配置し、ループを回避して将来の呼び出しを高速化しました。
array_map がどのように機能するか、または正しいルートであるかどうかがよくわからないため、私は array_map が得意ではありませんでした。