Array_diff_uassoc () 의 프로토 타입은 다음과 같습니다.
array array_diff_uassoc ( array $array1 , array $array2 , callable $key_compare_func )
$ array1 및 $ array2 : 비교할 두 개의 배열.
$ key_compare_func : 어레이에서 키를 비교하기위한 사용자 정의 콜백 함수.
이 함수는 $ array2 의 일치 키가없는 $ array1 의 모든 키 값 쌍을 포함하는 배열을 반환합니다. 중요한 것은 여기서 비교는 키 이름 과 사용자 정의 비교 함수를 기반으로합니다.
콜백 함수의 정의 key_compare_func은 다음과 같습니다.
function key_compare_func ($key1, $key2) {
// 비교 키의 논리
}
Array_Diff_Uassoc () 에서이 콜백 함수는 키 이름 만 비교하며 값과 관련이 없습니다. 이 기능의 목적은 개발자가 자신의 요구에 따라 어레이에서 키를 비교하는 방법을 정의 할 수 있도록하는 것입니다.
Array_Diff_Uassoc ()는 먼저 $ array1 및 $ array2 의 키 이름을 비교합니다.
$ array1 의 키 이름이 $ array2 에 존재하지 않거나 콜백 함수를 통해 키 이름을 비교 한 결과가 불평등 한 경우 $ array1 의 키 값 쌍이 유지됩니다.
이 비교는 전적으로 키 이름을 기반으로하며 값은 비교에 참여하지 않습니다.
이 행동을 이해하려면 PHP의 디자인 철학으로 돌아가야합니다. array_diff_uassoc () 함수의 주요 목적은 키 이름을 기반으로 배열의 차이를 계산하는 것입니다. 동시에 키 값의 차이를 고려하면 함수는 array_diff () 또는 array_diff_assoc () 와 겹칩니다.
디자인 목적은 분명합니다 . array_diff_uassoc () 의 원래 의도는 값의 차이뿐만 아니라 키 이름의 차이를 비교하는 것입니다. 값 비교 함수는 array_diff () 및 array_diff_assoc () 에서 잘 구현되었습니다.
콜백 함수의 제한 사항 : 콜백 함수 key_compare_func 는 값이 아닌 키 이름을 비교 한 것입니다. PHP의 디자인 철학은 일반적으로 각 함수의 동작이 명확 해지도록 각 함수가 하나의 일을하도록하는 것입니다.
효율성 고려 사항 : 콜백 함수가 키와 값을 동시에 비교하면 기능의 구현이 더 복잡하고 비효율적 일 수 있습니다. PHP는 각 기능을 통해 키와 값을 비교하여 작업을 효율적으로 그리고 간단하게 완료 할 수 있습니다.
다음 배열이 있다고 가정합니다.
$array1 = [
1 => 'apple',
2 => 'banana',
3 => 'cherry',
];
$array2 = [
1 => 'apple',
2 => 'orange',
4 => 'grape',
];
Array_Diff_Uassoc ()를 사용하여 비교하면 콜백 함수는 키 이름 만 비교합니다.
function compare_keys($key1, $key2) {
return $key1 - $key2;
}
$result = array_diff_uassoc($array1, $array2, 'compare_keys');
print_r($result);
출력 결과 :
Array
(
[3] => cherry
)
이 예에서 Array_Diff_Uassoc ()는 Array $ array1 및 $ array2 의 주요 이름을 비교하여 $ array2 에 있지 않은 키를 찾습니다. 결과적으로 3 => 체리는 키 3이 $ array2 에 존재하지 않지만 값은 다르기 때문에 보존됩니다. 예상대로 콜백 함수는 키 이름에만 유효하며 값은 비교에 참여하지 않습니다.
array_diff_uassoc () 콜백 함수가 키 이름에만 유효한 이유는 값을 무시하는 이유는 주로 함수의 설계 목표가 키 이름을 기반으로 미분 계산을 수행하는 것이기 때문입니다. 이 동작은 함수의 논리를 단순화하여 더 효율적이고 목표에 중점을 둡니다. 키 이름의 차이. 키 값을 차별적으로 비교 해야하는 경우 array_diff_assoc () 와 같은 다른 함수를 사용하거나 콜백 함수에서 값 및 키 이름을 처리 할 수 있습니다.