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); ?>