戻る

異なる配列を1つにまとめる(参考)

PHP

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>";
}

?>

inserted by FC2 system