개요
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()은 개발자가 정의한 콜백 함수로 값을 비교할 수 있다는 점이 차이입니다. 대소문자를 무시한 비교나 특수한 데이터 타입 비교 등 커스텀 로직이 필요할 때 유용하게 활용할 수 있습니다.