Posted at

phpの配列同士の重複をチェックする

なかなかググり力不足で一発でぐぐれないのでこちらに書きます。

「php 配列 重複 チェック」で検索したときに出やすいです。

このケースでは、関数を使わないとこんな感じでforeachを使うことになると思います。


example1

$array1 = [1 ,2 ,3];

$array2 = [2, 4];

$result = []:
foreach ($array1 as $a1) {
foreach ($array2 as $a2) {
if ($a1 === $a2) {
$result[] = $a;
}
}
}

var_dump($result);


「array_intersect」を使うとスッキリ書けます。


example2

$array1 = [1 ,2 ,3];

$array2 = [2, 4];

var_dump(array_intersect($array1, $array2));

array(1) {
[1]=>
int(2)
}


この関数と逆の結果になるものとしてarray_diffがあります。

こちらは、重複していない、異なるものをチェックして配列で返してくれます。

どちらも便利でよいです。

php.net

array_intersect

php.net

array_diff