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

PHP array_udiff_assoc() 함수 완벽 가이드 – 배열 키와 값 비교하기

array_udiff_assoc() 함수는 배열의 키를 비교하고, 사용자가 직접 정의한 콜백 함수를 이용해 배열의 값을 비교합니다. 그 결과, 첫 번째 배열에 있는 값 중 다른 어떤 배열에도 존재하지 않는 값들을 모아 하나의 배열로 반환합니다.

일반적인 차집합 함수와 달리 이 함수는 키까지 함께 비교한다는 점이 특징입니다. 즉, 값이 같더라도 해당 값이 속한 키가 동일해야 같은 요소로 간주됩니다.

구문(Syntax)

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

매개변수(Parameters)

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

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

  • arr3 − 추가로 비교하고 싶은 더 많은 배열들입니다.

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

반환값(Return Value)

array_udiff_assoc() 함수는 첫 번째 배열의 값 중에서 다른 매개변수로 전달된 어떤 배열에도 존재하지 않는 모든 값을 담은 배열을 반환합니다.

예제(Example)

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

<?php
function compare_func($a, $b) {
    if ($a === $b) {
        return 0;
    }
    return ($a > $b) ? 1 : -1;
}
$arr1 = array("a" => "laptop", "b" => "keyboard", "c" => "mouse");
$arr2 = array("a" => "laptop", "d" => "mouse");
$res = array_udiff_assoc($arr1, $arr2, "compare_func");
print_r($res);
?>

출력 결과(Output)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Array
(
    [b] => keyboard
    [c] => mouse
)

결과 해설

위 예제에서 키 "a"의 "laptop"은 두 배열 모두에서 키와 값이 동일하게 존재하므로 결과에서 제외됩니다. 반면 "keyboard"는 두 번째 배열에 아예 존재하지 않고, "mouse"는 값은 같지만 키가 "c"와 "d"로 서로 다르기 때문에(키까지 함께 비교하므로) 첫 번째 배열에만 있는 요소로 판단되어 최종 결과에 포함됩니다.