Array_diff_uassoc 는 PHP의 배열 비교 함수입니다. 일반적으로 두 배열의 키와 값을 비교하는 데 사용됩니다. 사용자 정의 콜백 함수를 사용하여 배열 요소의 키를 비교합니다. Array_Diff_Assoc 함수와 달리 Array_Diff_Uassoc을 사용하면 사용자가 비교 규칙을 사용자 정의 할 수 있습니다. 이 기사에서는 Array_Diff_Uassoc을 사용할 때 콜백 함수의 반환 값이 정수가되어야하는 이유를 탐색하고 기능의 작동 원리 및 사용 시나리오를 검토합니다.
Array_Diff_Uassoc 함수는 두 배열의 키 값 쌍을 비교하고 첫 번째 배열에 있지만 다른 배열에는 있지 않은 키 값 쌍을 반환하는 데 사용됩니다. 이 기능은 Array_Diff_Assoc 과 유사하지만 Array_Diff_Uassoc은 사용자가 콜백 함수를 지정하여 키 비교 방법을 결정할 수있는 추가 기능을 제공합니다.
기능 프로토 타입 :
array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
$ array1 : 첫 번째 배열을 비교합니다.
$ array2 : 비교할 두 번째 배열.
$ key_compare_func : 두 배열의 키를 비교하는 사용자 정의 콜백 함수.
Array_Diff_Uassoc을 사용하는 경우 콜백 함수에서 반환 된 값은 정수 여야합니다. array_diff_uassoc은 콜백 함수를 사용하여 두 배열의 키를 비교하고 키를 비교할 때 콜백 함수를 호출하여 각 키의 순서를 결정하기 때문입니다. 콜백 함수의 반환 값은 키의 관계를 결정하고 PHP는 정렬 및 차이 계산을 수행하기 위해 명확한 비교 결과가 필요합니다.
콜백 함수의 반환 값 정의 :
반환 값은 음의 정수로 첫 번째 키가 두 번째 키보다 작음을 나타냅니다.
리턴 값 은 0이므로 두 키가 동일하다는 것을 나타냅니다.
반환 값은 양의 정수 이며 첫 번째 키가 두 번째 키보다 큽니다.
이 반환 값은 PHP에서 일반적으로 사용되는 strcmp 또는 strcasecmp 함수와 유사하며, 또한 정수 값을 반환하여 두 줄의 비교 결과를 나타냅니다.
명확한 비교 규칙 : PHP의 array_diff_uassoc 함수는 두 키를 비교하기위한 표준으로 콜백 함수의 반환 값이 필요합니다. 정수 반환 값은 "작은", "평등"또는 "큰"관계를 정확하게 나타낼 수 있습니다. 정수를 반환하면 PHP가 키를 정렬하고 비교하여 두 배열의 차이를 올바르게 계산할 수 있습니다.
PHP : PHP 내부 정렬 함수 ( USORT 및 UKSORT 등) 내의 분류 메커니즘에 따라 콜백 함수가 정수 값을 반환하기 위해 두 요소 간의 분류 관계를 나타냅니다. 따라서 Array_Diff_Uassoc 함수는 동일한 규칙을 채택하여 다른 정렬 관련 기능과의 일관성과 호환성을 보장합니다.
단순화 된 로직 : 콜백 함수가 다른 유형의 데이터 (예 : 부울 값 또는 문자열)를 반환하는 경우 PHP는 키 정렬 로직을 올바르게 처리 할 수 없습니다. 정수 반환 값은이 프로세스를 단순화하여 PHP 내부 비교 메커니즘이 배열 차이를 효과적으로 처리 할 수 있도록합니다.
다음은 array_diff_uassoc를 사용하는 간단한 예입니다.
<?php
// 콜백 함수를 정의합니다,두 키의 크기를 비교하는 데 사용됩니다
function compare_keys($key1, $key2) {
return strcmp($key1, $key2); // 사용 strcmp 반환 정수 결과
}
// 두 배열을 정의합니다
$array1 = ["a" => 1, "b" => 2, "c" => 3];
$array2 = ["b" => 2, "d" => 4];
// 사용 array_diff_uassoc 함수는 두 배열을 비교합니다
$result = array_diff_uassoc($array1, $array2, 'compare_keys');
// 출력 결과
print_r($result);
?>
산출:
Array
(
[a] => 1
[c] => 3
)
위의 예에서, 우리는 배열의 키를 비교하기 위해 strcmp 함수를 콜백 함수로 사용했습니다. STRCMP는 정수 값을 반환하기 때문에 주요 비교를 부드럽게 수행 할 수 있으며 Array_Diff_Uassoc는 배열 차이를 올바르게 계산할 수 있습니다.
array_diff_uassoc을 사용할 때는 콜백 함수의 반환 값이 정수 여야합니다. PHP는 내부적으로 정수를 기반으로 키 사이의 크기 관계를 결정하여 배열의 차이를 올바르게 계산해야하기 때문입니다. 반환 정수는 명확한 비교 결과를 제공하여 기능이 올바르게 작동하고 PHP의 다른 분류 및 비교 함수와 일치하도록합니다.