PHP で 2 つの多次元配列を結合したい場合は、引き続き使用する必要があります。 array_merge
、ではありません array_merge_recursive
。 混乱した? 私もそうでした。何が起こっているのか説明しましょう。
まずは何なのか説明しましょう array_merge_recursive
たとえば、次の 2 つの配列を取り上げます。
$first = (
'key' => 'original'
);
$second = (
'key' => 'override'
);
使用する array_merge_recursive
結果は次のようになります。
array_merge_recursive($first, $second);
オリジナルをオーバーライドする代わりに key
価値、 array_merge_recursive
元の値と新しい値の両方を含む配列を作成しました。
この単純な例では奇妙に見えますが、値の 1 つがすでに配列であり、その配列をオーバーライドするのではなく、その配列内の別の項目をマージしたい場合には、実際にはより便利です。
$first = (
'key' => ('original')
);
$second = (
'key' => 'override'
);
この場合、 array_merge_recursive
最初の例と同じ結果が得られます。つまり、 $second
配列を取得し、それを内の値に追加します。 $first
配列、これはすでに配列そのものでした。
array_merge_recursive($first, $second);
したがって、多次元配列をマージしたい場合は、単に次のように使用できます。 array_merge
、複数レベルの配列を問題なく処理できます。
$first = (
'level 1' => (
'level 2' => 'original'
)
);
$second = (
'level 1' => (
'level 2' => 'override'
)
);
array_merge($first, $second);
そうは言っても、次を使用することもできます。 +
多次元配列をマージする演算子ですが、動作は次の演算子と若干異なります。 array_merge
。