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

PHP array_uintersect_uassoc() 함수 완벽 정리 – 사용자 정의 콜백으로 배열 키·값 비교하기

PHP의 array_uintersect_uassoc() 함수는 사용자가 직접 정의한 콜백 함수를 사용하여 배열의 키(key)값(value)을 각각 비교한 뒤, 두 배열 사이의 교집합에 해당하는 요소만 담은 새로운 배열을 반환합니다.

문법(Syntax)

array_uintersect_uassoc(arr1, arr2, arr3, … , compare_func1, compare_func2)

매개변수(Parameters)

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

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

  • arr3 − 추가로 비교할 배열입니다. 필요에 따라 여러 개의 배열을 계속 전달할 수 있습니다.

  • compare_func1 − 배열의 를 비교하는 콜백 함수입니다. 첫 번째 인수가 두 번째 인수보다 작으면 0보다 작은 정수, 같으면 0, 크면 0보다 큰 정수를 반환해야 합니다.

  • compare_func2 − 배열의 을 비교하는 콜백 함수입니다. 마찬가지로 첫 번째 인수가 두 번째 인수보다 작으면 0보다 작은 정수, 같으면 0, 크면 0보다 큰 정수를 반환해야 합니다.

반환 값(Return Value)

array_uintersect_uassoc() 함수는 키와 값이 모두 일치하는 요소만 골라낸, 첫 번째 배열과 나머지 배열들의 교집합 배열을 반환합니다. 다른 배열 어디에도 존재하지 않는 요소는 결과에서 제외됩니다.

예제(Example)

다음은 두 개의 연관 배열에서 공통된 요소만 추출하는 예제입니다.

<?php
// 키를 비교하는 콜백 함수
function compare_func_key($a, $b) {
   if ($a === $b) {
      return 0;
   }
   return ($a > $b)? 1:-1;
}
// 값을 비교하는 콜백 함수
function compare_func_val($a, $b) {
   if ($a === $b) {
      return 0;
   }
   return ($a > $b)? 1:-1;
}
$arr1 = array("a" => "laptop", "b" => "keyboard", "c" => "mouse");
$arr2 = array("a" => "laptop", "b" => "keyboard", "c" => "headphone");
$res = array_uintersect_uassoc($arr1, $arr2, "compare_func_key", "compare_func_val");
print_r($res);
?>

위 예제에서는 키를 비교하는 compare_func_key()와 값을 비교하는 compare_func_val() 두 개의 콜백 함수를 정의했습니다. 키 'a'와 'b'는 두 배열에서 키와 값이 모두 동일하지만, 키 'c'는 값이 각각 'mouse'와 'headphone'으로 서로 다르기 때문에 최종 결과에서 제외됩니다.

출력(Output)

실행 결과는 다음과 같습니다.

Array
(
[a] => laptop
[b] => keyboard
)

참고: 유사한 함수와의 차이점

  • array_uintersect() − 배열의 값만 콜백 함수로 비교합니다.

  • array_uintersect_assoc() − 값은 콜백 함수로, 키는 내장 방식으로 비교합니다.

  • array_uintersect_uassoc() − 키와 값을 모두 별도의 콜백 함수로 비교합니다.