array_merge()関数は複数の配列を1つに合成します。合成する配列は引数として指定し、3個以上の配列を指定することも可能です。合成された配列はarray_merge()関数からの返り値となります。その際、引数に指定した配列は変化しません。
数値インデックスの配列をarray_merge()関数に渡すと、2つの配列内のデータがその順番に列挙される形で返されます。例えば「array_merge($value1, $value2)」を実行した場合、まず$value1の内容が列挙され、その後ろに$value2の内容が追加されます。このため、合成語のデータ数は、もとの各配列のデータ数の和となります。
一方、連想配列では重複したキーを持てないので、第2引数以降の配列で同じ「キー」が出てきた場合は、それまであった「値」は後ろの値で上書きされます。したがって、キーが重複しているデータ数によっては、合成語の配列データ数はもとの各配列データ数の和よりも少なくなります。
この場合、「ブラジル」と「イタリア」のキーが両方の配列に存在しているため、第2引数に指定されている$team2の値、すなわち「南米2」と「ヨーロッパ2」が最終的な値となります。もちろん、キーも値も同一のデータであれば、重複していても結果的には同じものがアウトプットされます。
<?php header("Content-type: text/html; charset=utf-8"); $value1 = array(10, 30, 50, 70, 90); $value2 = array(10, 30, 50, 70, 90); $merge = array_merge($value1, $value2); echo "合成直後の配列のデータ<br>"; foreach($merge as $data){ echo $data . ", "; } echo "<br><br>"; sort($merge); echo "並べ替え直後の配列のデータ<br>"; foreach($merge as $data){ echo $data . ", "; } echo "<br><br>"; $team1 = array("ブラジル"=>"南米1","イタリア"=>"ヨーロッパ1", "イングランド"=>"ヨーロッパ","オランダ"=>"ヨーロッパ"); $team2 = array("ブラジル"=>"南米2","イタリア"=>"ヨーロッパ2", "アルゼンチン"=>"南米","フランス"=>"ヨーロッパ"); $merge = array_merge($team1, $team2); echo "合成語の連想配列のデータ<br>"; while(list($key,$value) = each($merge)){ echo $key . " => " . $value . "<br>"; } ?>