複数の配列を結合して1つにまとめるには、array_merge関数を使う方法と、配列結合演算子「+」を使う方法があります。
主な違いは、同じ名前の文字列インデックスを上書きするかどうかです。array_merge関数では、既存の要素を上書きします。次の例では、重複するインデックス「t」の「東京」が「東京都」に置き換わります。
<?php $ar1 = array("t"=>"東京", "c"=>"千葉県"); $ar2 = array("t"=>"東京都", "k"=>"神奈川県"); print_r(array_merge($ar1, $ar2)); ?>
配列結合演算子「+」では、既存要素を上書きしません。重複するインデックス「t」の値は「東京」のままです。
<?php $ar1 = array("t"=>"東京", "c"=>"千葉県"); $ar2 = array("t"=>"東京都", "k"=>"神奈川県"); print_r($ar1 + $ar2); ?>
2つの違いを利用して、既存要素を上書きするかどうかを指定できるユーザー定義関数を作成することができます。
<?php $ar1 = array("t"=>"東京", "c"=>"千葉県"); $ar2 = array("t"=>"東京都", "k"=>"神奈川県"); // 既存要素を上書きする $ar3 = my_array_merge($ar1, $ar2, true); print_r($ar3); // 既存要素を上書きしない $ar3 = my_array_merge($ar1, $ar2, false); print_r($ar3); // 上書き指定が可能な配列結合関数 function my_array_merge($ar1, $ar2, $overwrite = false) { if ($overwrite) { $temp = array_merge($ar1, $ar2); // 既存要素を上書き } else { $temp = $ar1 + $ar2; // 既存要素を上書きしない } return $temp; } ?>