개요
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()− 배열의 값을 사용자 정의 콜백 함수로 비교합니다.