te17

PHP の array_merge または +

(jp) =

PHP には、2 つの配列を 1 つに結合する方法がいくつかあります。 使用できます array_merge または + オペレーター。 ただし、これら 2 つの方法には微妙な違いがありますが、知っておく価値のある違いです。

これら 2 つの方法を比較してみましょう。

array_merge($first, $second);



$first + $second;

これらが、作業している 2 つの配列であるとしましょう。

$first = [
    'a',
    'b',
];

$second = [
    'c',
];

これは単純な array_merge 電話:

array_merge($first, $second);

[
    'a',
    'b',
    'c',
]

一方、 + 演算子は次の結果を返します。

$first + $second;

[
    'a',
    'b',
]

使用中のオペランドの切り替え + 演算子、異なる結果が得られます。

$second + $first;

[
    'c',
    'b',
]

混乱している? 私もそうでした。

を書き出しましょう $first$second インデックス付きの完全な配列。 これにより、物事がより明確になります。

$first = [
    0 => 'a',
    1 => 'b',
];

$second = [
    0 => 'c',
];

ここまでで、何が起こっているか推測できるでしょう。 + オペレーターのみ 追加 キーが左側のオペランドに存在しない場合、右側のオペランドの要素。 array_merge 意思 オーバーライド 既存のキー。

その定義により、次のことも判断できます。 + 既存の要素がそのまま残るため、配列を再帰的にマージするために使用することはできません。

$first = [
    'A' => [
        'B' => true,
        'C' => true,
    ],
];

$second = [
    'A' => [
        'B' => false,
        'C' => false,
    ],
];

$first + $second;

結果は次のとおりです。

[
    'A' => [
        'B' => true,
        'C' => true,
    ],
]

使用中 array_merge、次の結果が得られます。

[
    'A' => [
        'B' => false,
        'C' => false,
    ],
]

「ちょっと待って」って言うのが聞こえる「そういうことじゃない?」 array_merge_recursive することになっていますか?」。

ここで、残念なネーミングのケースがあります。 驚かないでください。結局のところ、これは PHP です。

見る、 array_merge 一致する要素をオーバーライドしてマージします。
array_merge_recursive 一方、両方の要素を保持し、それらを新しい配列にマージして、両方の値を保持します。

これは、前の例がどのように見えるかを示しています。 array_merge_recursive:

[
    'A' => [
        'B' => [
            true,
            false,
        ],
        'C' => [
            true,
            false,
        ],
    ],
]

複数の配列をマージするとどうなりますか? あなたはおそらく今までに結果を推測することができます:

$first = ['a'];
$second = ['b'];
$third = ['c'];

これは何ですか array_merge 結果:

array_merge($first, $second, $third)
[
    'a',
    'b',
    'c',
]

連鎖する + 演算子も機能し、次の結果が得られます。

$first + $second + $third
[
    'a',
]

このちょっとした復習で、コードに深く入り込んで配列をマージする必要があるときに、これ以上混乱しないことを願っています。

「ちょっと待って、これを行う正しい方法は何ですか?」と立ち止まって考えなければならないとき、それは認知的負担であることがわかりました. 幸いなことに、私たちは知っています!

次の投稿
ミシシッピ川には何種類の魚が住んでいますか?
前の投稿
9 ネズミのように見える動物

ノート:

AZ: 動物の世界、ペット、ペット、野生の自然に関するカテゴリー記事…
SP:スポーツカテゴリー。
New vs Ne: ニュースコラム。
Te: テクノロジー カテゴリ。
Gt:エンターテインメントカテゴリー。
Bt: 占い、星占い、超常現象、超常現象。
Ta:人生コラム。