PHP에는 배열을 다룰 때 유용하게 활용할 수 있는 다양한 내장 함수가 있습니다. 그중 array_intersect()는 두 개 이상의 배열에서 공통으로 존재하는 요소(교집합)를 찾아내는 함수입니다. 이 글에서는 array_intersect() 함수의 동작 원리와 실전 예제를 통해 사용법을 자세히 알아보겠습니다.
array_intersect() 함수란?
array_intersect()는 PHP에 기본으로 포함된 배열 함수로, 두 개 이상의 배열을 비교하여 모든 배열에 공통으로 존재하는 값만 모은 새로운 배열을 반환합니다.
동작 방식을 간단히 정리하면 다음과 같습니다.
- 첫 번째 배열을 기준으로 나머지 배열들과 값을 비교합니다.
- 첫 번째 배열의 요소 중 다른 모든 배열에도 존재하는 값만 결과 배열에 담습니다.
- 결과 배열에는 첫 번째 배열의 키(key)가 그대로 유지됩니다.
사용 예제
다음 예제는 두 개의 배열에서 공통 요소를 추출하는 코드입니다.
<?php $array1 = array(5, 10, 15, 20, 34); $array2 = array(20, 10, 15, 55, 100); $intersect_array = array_intersect($array1, $array2); print_r($intersect_array); ?>
실행 결과
Array ( [1] => 10 [2] => 15 [3] => 20 )
코드 설명
위 예제에서는 두 개의 배열 $array1과 $array2를 선언한 뒤, array_intersect()> 함수를 호출했습니다.
함수 실행 결과, 두 배열 모두에 존재하는 값인 10, 15, 20만 담긴 배열이 반환되었습니다. 반면 첫 번째 배열에만 있는 5와 34, 그리고 두 번째 배열에만 있는 55와 100은 결과에서 제외된 것을 확인할 수 있습니다.
주의할 점: 키(Key) 유지
array_intersect()> 함수의 중요한 특징 중 하나는 요소의 키가 보존된다는 점입니다. 즉, 결과 배열의 키는 새로 0부터 다시 매겨지는 것이 아니라, 해당 값이 첫 번째 배열에서 가지고 있던 원래의 키를 그대로 따릅니다.
위 예제에서도 값 10, 15, 20이 첫 번째 배열에서 키 1, 2, 3을 가지고 있었기 때문에, 결과 배열 역시 동일한 키를 유지하는 것을 볼 수 있습니다.
참고: 만약 키가 아닌 값(value)만 비교 대상이라면
array_intersect()>를, 키(key)까지 비교해야 한다면array_intersect_assoc()> 함수를 사용하면 됩니다.
마무리
array_intersect()>는 여러 배열에서 공통 데이터를 빠르게 필터링할 수 있는 간편하고 강력한 함수입니다. 권한 비교, 태그 매칭, 목록 필터링 등 다양한 상황에서 활용할 수 있으니, 배열의 키가 유지된다는 특징까지 기억해 두면 실무에서 큰 도움이 될 것입니다.