戻る

異なる配列どうしを比較する(参考)

PHP

array_diff()関数を使うと、内容が異なる2つの配列を比較して、一方にしかないデータを取得できます。取得した結果は配列として返されます。その内容を列挙することにより、もとの2つの配列で差異のあるデータを確認できます。

ここでは、似たような2つの配列を用意して比較しています。2つの配列はそれぞれ、相手にはないデータを持っています。この場合、array_diff()関数に与える引数の順番によって、以下のように結果がことなります。

array_diff($team1,$team2) → $team1にあり、$team2にないデータが取得される

array_diff($team2,$team1) → $team2にあり、$team1にないデータが取得される(上記の逆)

<?php
header("Content-type: text/html; charset=utf-8");

$team1 = array("ブラジル","アルゼンチン","イングランド","オランダ",
			"スペイン","ポルトガル");


$team2 = array("ブラジル","イタリア","アルゼンチン","フランス",
			"オランダ","ポルトガル");
			
//1つ目の配列にあって2つ目の配列にないデータを取得
$diff = array_diff($team1, $team2);

foreach($diff as $data){
	echo $data . "<br>";
}

echo "<br>";

//2つ目の配列にあって1つ目の配列にないデータを取得
$diff = array_diff($team2, $team1);

foreach($diff as $data){
	echo $data . "<br>";
}
?>

関数を使わずに配列を比較する場合

<?php
header("Content-type: text/plain; charset=utf-8");

$team1 = array("ブラジル","アルゼンチン","イングランド","オランダ",
			"スペイン","ポルトガル");

$team2 = array("ブラジル","イタリア","アルゼンチン","フランス",
			"オランダ","ポルトガル");

$diffAry1 = array();

foreach($team1 as $data1){
	$flg = FALSE;
	foreach($team2 as $data2){
		if($data1 == $data2){
			$flg = TRUE;
			break;
		}
	}
	if($flg == FALSE){
		array_push($diffAry1,$data1);
	}
}

var_dump($diffAry1);


$diffAry2 = array();

foreach($team2 as $data2){
	$flg = FALSE;
	foreach($team1 as $data1){
		if($data1 == $data2){
			$flg = TRUE;
			break;
		}
	}
	if($flg == FALSE){
		array_push($diffAry2,$data2);
	}
}

var_dump($diffAry2);

?>

inserted by FC2 system