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

PHP array_intersect() 함수 사용법 – 배열의 교집합 구하기

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
)

두 배열을 비교한 결과, 공통으로 존재하는 값은 60100뿐입니다. 결과 배열에는 해당 값들이 첫 번째 배열에서 가지고 있던 인덱스(키)인 3과 5를 그대로 유지한 채 담기게 됩니다.

참고 사항

  • 값만 비교하며, 키는 비교하지 않습니다. 키까지 함께 비교하려면 array_intersect_assoc() 함수를 사용하세요.

  • 문자열 비교 시 대소문자를 구분합니다. 대소문자를 무시하고 비교하려면 array_intersect_uassoc() 또는 커스텀 콜백 함수를 활용할 수 있습니다.

  • 두 개 이상의 배열도 한 번에 비교할 수 있어, 여러 데이터 집합 간의 공통 요소를 손쉽게 찾을 때 유용합니다.