PHP의 array_intersect() 함수는 여러 배열의 값을 서로 비교하여 공통으로 존재하는 값(교집합)만 추려내는 함수입니다. 첫 번째 배열에 있는 값들 중, 나머지 모든 배열에도 동일하게 존재하는 값들을 모아 새로운 배열로 반환합니다.
기본 문법
array_intersect(arr1, arr2, arr3, arr4, …)
매개변수 설명
arr1 − 기준이 되는 배열입니다. 반드시 입력해야 합니다(필수).
arr2 − 비교 대상이 되는 배열입니다. 반드시 입력해야 합니다(필수).
arr3 − 추가로 비교할 배열입니다. 선택 사항입니다.
arr4 − 그 외 추가로 비교할 배열도 계속 넣을 수 있습니다. 선택 사항입니다.
반환값
array_intersect() 함수는 첫 번째 배열(arr1)의 값 중에서, 다른 모든 매개변수로 전달된 배열에도 존재하는 값들만 담은 배열을 반환합니다. 이때 키(key)는 첫 번째 배열의 키가 그대로 유지되며, 값(value)만 비교한다는 점에 유의하세요.
예제 1: 문자열 배열 비교
<?php
$a1 = array("p"=>"Windows","q"=>"Mac","r"=>"Linux");
$a2 = array("s"=>"Windows","t"=>"Linux");
$result = array_intersect($a1,$a2);
print_r($result);
?>실행 결과
Array ( [p] => Windows [r] => Linux )
위 예제에서 첫 번째 배열 $a1의 값 중 "Windows"와 "Linux"는 두 번째 배열 $a2에도 존재하므로 결과에 포함됩니다. 반면 "Mac"은 두 번째 배열에 없기 때문에 제외됩니다. 결과 배열의 키는 첫 번째 배열의 원래 키("p", "r")가 유지되는 것을 확인할 수 있습니다.
예제 2: 숫자 배열 비교
<?php $arr1 = array(15, 30, 40, 60, 78, 100, 130, 145, 150); $arr2 = array(50, 60, 70, 80, 90, 100); $res = array_intersect($arr1,$arr2); print_r($res); ?>
실행 결과
Array ( [3] => 60 [5] => 100 )
두 배열을 비교한 결과, 공통으로 존재하는 값은 60과 100뿐입니다. 결과 배열에는 해당 값들이 첫 번째 배열에서 가지고 있던 인덱스(키)인 3과 5를 그대로 유지한 채 담기게 됩니다.
참고 사항
값만 비교하며, 키는 비교하지 않습니다. 키까지 함께 비교하려면
array_intersect_assoc()함수를 사용하세요.문자열 비교 시 대소문자를 구분합니다. 대소문자를 무시하고 비교하려면
array_intersect_uassoc()또는 커스텀 콜백 함수를 활용할 수 있습니다.두 개 이상의 배열도 한 번에 비교할 수 있어, 여러 데이터 집합 간의 공통 요소를 손쉽게 찾을 때 유용합니다.