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

PHP array_uintersect_assoc() 함수 – 키와 값을 동시에 비교하는 배열 교집합 구하기

개요

PHP의 array_uintersect_assoc() 함수는 여러 배열 간의 교집합을 구하는 함수입니다. 이 함수는 배열의 키(key)를 기준으로 비교하고, 배열의 값(value)은 사용자가 직접 정의한 콜백 함수를 통해 비교합니다. 그 결과, 키와 값이 모두 일치하는 요소만 담긴 새로운 배열을 반환합니다.

문법(Syntax)

array_uintersect_assoc(arr1, arr2, arr3, …, compare_func)

매개변수(Parameters)

  • arr1 − 비교의 기준이 되는 첫 번째 배열입니다.

  • arr2 − 첫 번째 배열과 비교할 두 번째 배열입니다.

  • arr3 − 추가로 비교할 배열들입니다. 필요에 따라 여러 개를 지정할 수 있습니다.

  • compare_func − 값을 비교하는 데 사용되는 콜백 함수입니다. 이 함수는 첫 번째 인수가 두 번째 인수보다 작을 때는 0보다 작은 정수, 같을 때는 0, 클 때는 0보다 큰 정수를 반환해야 합니다.

반환값(Return)

array_uintersect_assoc() 함수는 첫 번째 배열의 요소 중에서, 다른 모든 배열에도 키와 값이 모두 일치하는 형태로 존재하는 값들을 포함한 배열을 반환합니다.

예제(Example)

다음은 array_uintersect_assoc() 함수의 사용 예시입니다.

<?php
function compare_func($a, $b) {
    if ($a === $b) {
        return 0;
    }
    return ($a > $b) ? 1 : -1;
}
$arr1 = array("p"=>"one","q"=>"two","r"=>"three");
$arr2 = array("p"=>"five","q"=>"four","r"=>"three");
$res = array_uintersect_assoc($arr1, $arr2, "compare_func");
print_r($res);
?>

실행 결과(Output)

Array (
    [r] => three
)

결과 해석

위 예제에서 두 배열을 비교해 보면, 키 "r"에 해당하는 값 "three"만 양쪽 배열에서 동일하게 존재합니다. 따라서 최종 결과 배열에는 [r] => three만 포함됩니다. 반면 키 "p""q"에 해당하는 값들은 두 배열에서 서로 다르기 때문에 결과에서 제외됩니다.

참고로, 유사한 함수인 array_intersect_assoc()은 내장된 비교 방식을 사용하는 반면, array_uintersect_assoc()은 개발자가 정의한 콜백 함수로 값을 비교할 수 있다는 점이 차이입니다. 대소문자를 무시한 비교나 특수한 데이터 타입 비교 등 커스텀 로직이 필요할 때 유용하게 활용할 수 있습니다.