PHP에서 array_diff_uassoc () 함수는 두 배열의 차이를 비교하는 데 사용되며 키 비교 규칙을 사용자 정의 할 수 있습니다. 이 기능의 기본 구문은 다음과 같습니다.
array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
$ array1 은 첫 번째 배열입니다.
$ array2 는 두 번째 배열이며 $ array1 과 비교됩니다.
$ key_compare_func는 두 키를 비교하는 콜백 함수입니다.
Array_diff_uassoc () 함수는 $ array1 에 존재하지만 $ array2 에는 존재하지 않는 요소를 포함하는 배열을 반환합니다. 비교는 키 이름 (사용자 정의 콜백 함수 사용)을 기준으로합니다. 그러나 몇 가지 질문에 직면 할 수 있습니다. key_compare_func 의 반환 값이 0 , -1 또는 1 일 때, 이러한 다른 반환 값은 함수 결과에 어떤 영향을 미칩니 까?
key_compare_func 콜백 함수가 0을 반환하면 두 키가 같음을 의미합니다. Array_diff_uassoc () 함수에서, 이는 $ array1 및 $ array2 의 현재 키 값 쌍이 키 이름에 차이가 없음을 의미합니다. 따라서 이러한 키 값 쌍은 차이의 일부로 간주되지 않으며 반환 된 결과 배열에는 나타나지 않습니다.
예:
$array1 = [
'apple' => 'red',
'banana' => 'yellow'
];
$array2 = [
'apple' => 'green',
'banana' => 'yellow'
];
function compare_keys($key1, $key2) {
return 0; // 두 키가 동일하다는 것을 나타냅니다
}
$result = array_diff_uassoc($array1, $array2, 'compare_keys');
print_r($result);
산출:
Array
(
[apple] => red
)
설명 : Compare_Keys () 가 0을 반환하기 때문에 Apple 과 Banana가 동일하다는 것을 의미합니다. Array_Diff_Uassoc () 는 차이가 없다고 생각하므로 리턴 배열에는 키 애플 에 해당하는 '빨간색' 값 만 포함됩니다.
key_compare_func가 -1을 반환하면 $ array1 의 키가 $ array2 의 키보다 작다는 것을 의미합니다. 이 경우 Array_diff_uassoc ()는 $ array1 의 현재 키 값 쌍이 $ array2 에서 동일한 키를 찾지 않기 때문에 유지되어야한다고 생각합니다. 따라서 이러한 키 값 쌍이 결과 배열에 나타납니다.
예:
$array1 = [
'apple' => 'red',
'banana' => 'yellow'
];
$array2 = [
'apple' => 'green',
'cherry' => 'red'
];
function compare_keys($key1, $key2) {
return -1; // 표현하다 key1 보다 적습니다 key2
}
$result = array_diff_uassoc($array1, $array2, 'compare_keys');
print_r($result);
산출:
Array
(
[banana] => yellow
)
설명 : compare_keys () 가 -1을 반환하기 때문에 키 애플이 키 체리 보다 작다는 것을 나타내므로 바나나는 $ array1 에서 해당 키 쌍을 찾지 못하므로 바나나 에 해당하는 주요 값 쌍이 결과 배열에 나타납니다.
key_compare_func가 1을 반환하면 $ array1 의 키가 $ array2 의 키보다 크다는 것을 의미합니다. 이 시점에서 Array_Diff_Uassoc ()는 $ array1 의 현재 키 값 쌍이 중복으로 간주하므로 결과 배열에서 제외됩니다.
예:
$array1 = [
'apple' => 'red',
'banana' => 'yellow'
];
$array2 = [
'apple' => 'green',
'banana' => 'yellow'
];
function compare_keys($key1, $key2) {
return 1; // 표현하다 key1 더 큽니다 key2
}
$result = array_diff_uassoc($array1, $array2, 'compare_keys');
print_r($result);
산출:
Array
(
[apple] => red
)
설명 : 이 예에서는 Compare_Keys ()가 1을 반환하여 주요 애플이 주요 바나나 보다 크다는 것을 나타냅니다. 따라서 Apple 의 키 값 쌍은 $ array1 에서 $ array2 와 정확히 동일한 키 쌍에서 찾을 수 없으며 반환 된 배열에 나타납니다.
array_diff_uassoc ()을 사용하는 경우 콜백 함수의 리턴 값 0 , -1 및 1은 키를 비교하는 방식에 직접 영향을 미칩니다.
반환 0 : 키가 같고 현재 키 값 쌍이 차이로 간주되지 않음을 의미합니다.
반환 -1 : $ array1 의 키는 $ array2 의 키보다 작고 현재 키 값 쌍이 결과 배열에 나타납니다.
반환 1 : $ array1 의 키는 $ array2 의 키보다 크고 현재 키 값 쌍은 제외됩니다.
콜백 함수의 비교 논리를 조정함으로써 비교 규칙을 유연하게 제어하여 맞춤형 차이 비교를 달성 할 수 있습니다.