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

PHP array_diff_ukey() 함수 – 콜백 함수로 배열 키 차이 비교하기

개요

PHP의 array_diff_ukey() 함수는 여러 배열의 키(key)를 비교하는 함수로, 비교 방식을 결정하기 위해 사용자가 직접 정의한 콜백 함수를 사용합니다. 첫 번째 배열에는 존재하지만 다른 배열에는 없는 키와 해당 값들을 모아 새로운 배열로 반환합니다.

구문

array_diff_ukey(arr1, arr2, arr3, arr4, …, compare_func)

매개변수

  • arr1 − 비교의 기준이 되는 배열입니다. (필수)

  • arr2 − arr1과 비교할 대상 배열입니다. (필수)

  • arr3 − 추가로 비교할 배열입니다. 필요에 따라 더 많은 배열을 계속 지정할 수 있습니다. (선택)

  • arr4 − 추가로 비교할 배열입니다. (선택)

  • compare_func − 키를 비교하는 데 사용되는 콜백 함수입니다. 첫 번째 인수가 두 번째 인수보다 각각 작으면(<), 같으면(=), 크면(>) 0보다 작은 정수, 0, 0보다 큰 정수를 반환해야 합니다.

반환값

array_diff_ukey() 함수는 첫 번째 배열(arr1)에는 존재하지만 다른 어떤 배열에도 없는 항목만 포함된 배열을 반환합니다. 이때 비교 대상은 값이 아니라 라는 점에 유의하세요.

예제

다음 예제는 두 배열의 키를 사용자가 정의한 함수로 비교합니다.

<?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_diff_ukey($arr1, $arr2, "compare_func");
print_r($res);
?>

실행 결과

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

결과 해석

위 예제에서 키 "a"는 두 배열 모두에 존재하므로 결과에서 제외됩니다. 반면 키 "b""c"$arr2에 없기 때문에 결과 배열에 그대로 남습니다. 참고로 $arr2의 키 "d"는 첫 번째 배열에 존재하지 않으므로 결과에 포함되지 않습니다.

참고: 관련 함수

  • array_diff_key() − 내장 비교 방식으로 배열 키의 차이를 구합니다.

  • array_diff_uassoc() − 키와 값을 함께 비교하며 사용자 정의 콜백 함수를 사용합니다.

  • array_udiff() − 배열의 값을 사용자 정의 콜백 함수로 비교합니다.