Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP array_intersect() 함수 완벽 가이드 – 배열의 교집합 구하기

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만 담긴 배열이 반환되었습니다. 반면 첫 번째 배열에만 있는 534, 그리고 두 번째 배열에만 있는 55100은 결과에서 제외된 것을 확인할 수 있습니다.

주의할 점: 키(Key) 유지

array_intersect() 함수의 중요한 특징 중 하나는 요소의 키가 보존된다는 점입니다. 즉, 결과 배열의 키는 새로 0부터 다시 매겨지는 것이 아니라, 해당 값이 첫 번째 배열에서 가지고 있던 원래의 키를 그대로 따릅니다.

위 예제에서도 값 10, 15, 20이 첫 번째 배열에서 키 1, 2, 3을 가지고 있었기 때문에, 결과 배열 역시 동일한 키를 유지하는 것을 볼 수 있습니다.

참고: 만약 키가 아닌 값(value)만 비교 대상이라면 array_intersect()를, 키(key)까지 비교해야 한다면 array_intersect_assoc() 함수를 사용하면 됩니다.

마무리

array_intersect()는 여러 배열에서 공통 데이터를 빠르게 필터링할 수 있는 간편하고 강력한 함수입니다. 권한 비교, 태그 매칭, 목록 필터링 등 다양한 상황에서 활용할 수 있으니, 배열의 키가 유지된다는 특징까지 기억해 두면 실무에서 큰 도움이 될 것입니다.