PR

配列を2つ結合するのに一番よく使用される関数は、おそらく array_merge ではないでしょうか。ただし、array_merge 関数を使用すると数字キーの番号がふり直されてしまうので、キーが数字形式の連想配列を扱う場合に少々やっかいです。

array_mergeのマニュアルに記載されているように、「配列を完全に維持し、単に追加だけしたい場合には、+ 演算子を使用してください」とあるように+ 演算子を使用すると、数字でも文字列でも配列のキーを完全に保持することができます。

では、PHPマニュアルの配列演算子についてのページを見てみましょう。「$a + $b」というようなプラス演算子について、以下のような説明が見つかるでしょう。

-----
+ 演算子は左側の配列に右側の配列の内容を追加します。
  重複しているキーは上書き「されません」。
-----

とあります。重複しているキーは上書きされないので、普通の四則演算のように+ 演算子の左と右の変数を交換すると答えが変わってしまいます。

<?php
$a 
= array("a" => "apple""b" => "banana");
$b = array("a" => "pear""b" => "strawberry""c" => "cherry");

// $c = $a + $b と等価
$c $a;
foreach (
$b as $key => $val) {
  if (!isset(
$a[$key])) {
    
$c[$key] = $val;
  }
}
print_r($c);

// $d = $b + $a と等価
$d $a;
foreach (
$b as $key => $val) {
  
$d[$key] = $val;
}
print_r($d);
?>

上からも $a+$b≠$b+$a ということがわかるでしょう。2つの処理のうち、$d =$b + $a; と記述すればよい部分を、foreachを使って処理している方もいるのではないでしょうか。

連想配列の結合には + 演算子を、数字キーの配列の結合には array_merge 関数、というのが一般的な使用方法ではないでしょうか。もし配列の + 演算子を知らなかった方はこれを機会に、ぜひ使用して下さい。