1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Basic Study LogAdvent Calendar 2024

Day 10

PHPのarray_mergeと演算子による配列結合の違い

Posted at

array_mergeと演算子の違い

PHPで配列を結合する時の方法は様々あるが、その中にarray_mergeと 演算子 による方法がある。

しかし、ともに配列結合に使われるがキーが重複した時に微妙に挙動が異なる。

array_merge

リファレンスには以下のような記載がある通り、キーが重複すると後ろの配列の値が返される。

前の配列の後ろに配列を追加することにより、 ひとつまたは複数の配列の要素をマージし、得られた配列を返します。

入力配列が同じキー文字列を有していた場合、そのキーに関する後に指定された値が、 前の値を上書きします。しかし、配列が同じ添字番号を有していても 値は追記されるため、このようなことは起きません。

$array1 = ["key1" => "hoge", "key2" => "huga"];
$array2 = ["key1" => "foo", "key3" => "piyo"];

array_merge($array1, $array2);
// ["key1" => "foo", "key2" => "huga", "key3" => "piyo"]

演算子

一方、演算子の場合はキーが重複すると最初の配列の値が返される。

The + operator returns the right-hand array appended to the left-hand array; for keys that exist in both arrays, the elements from the left-hand array will be used, and the matching elements from the right-hand array will be ignored.

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

$array1 = ["key1" => "hoge", "key2" => "huga"];
$array2 = ["key1" => "foo", "key3" => "piyo"];

$array1 + $array2
// ["key1" => "hoge", "key2" => "huga", "key3" => "piyo"]

まとめ

キーが重複した場合の挙動は以下のようになる。

  • array_merge:後者の配列の値が返される
  • 演算子:前者の配列の値が返される

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?