1. ホーム
  2. php

[解決済み] PHPの配列のための+演算子?

2022-04-22 11:52:29

質問

$test = array('hi');
$test += array('test','oh');
var_dump($test);

とは何ですか? + は、PHP の配列の意味ですか?

どのように解決するのですか?

引用元 PHP マニュアル 言語演算子について

<ブロッククオート

両方の配列に存在するキーに対して、左側の配列の要素が使用され、 右側の配列の一致する要素は無視されます。

ということは、もしあなたが

$array1 = ['one',   'two',          'foo' => 'bar'];
$array2 = ['three', 'four', 'five', 'foo' => 'baz']; 

print_r($array1 + $array2);

を得ることができます。

Array
(
    [0] => one   // preserved from $array1 (left-hand array)
    [1] => two   // preserved from $array1 (left-hand array)
    [foo] => bar // preserved from $array1 (left-hand array)
    [2] => five  // added from $array2 (right-hand array)
)

というロジックは + は次のスニペットと同等です。

$union = $array1;

foreach ($array2 as $key => $value) {
    if (false === array_key_exists($key, $union)) {
        $union[$key] = $value;
    }
}

Cレベルの実装の詳細に興味がある場合は、次のサイトを参照してください。


+ とは異なります。 array_merge() は、配列を結合することになります。

print_r(array_merge($array1, $array2));

を与えるだろう。

Array
(
    [0] => one   // preserved from $array1
    [1] => two   // preserved from $array1
    [foo] => baz // overwritten from $array2
    [2] => three // appended from $array2
    [3] => four  // appended from $array2
    [4] => five  // appended from $array2
)

その他の例については、リンク先のページを参照してください。