PHP에서 Array_Diff_Uassoc () 는 두 배열의 차이를 계산하는 매우 유용한 배열 기능이며 사용자가 사용자 정의 비교 함수를 사용하여 배열 키를 비교할 수 있습니다. 이 기능을 사용할 때 많은 개발자가 종종 질문이 있습니다.
이 질문에 대답하려면 먼저 Array_diff_uassoc () 의 기본 사용과 동작을 이해해야합니다.
Array_diff_uassoc () 함수는 Array_diff () 와 유사한 두 배열의 차이를 계산하는 데 사용되지만 Array_diff_uassoc ()는 배열의 키와 값을 동시에 비교합니다. 기능 프로토 타입은 다음과 같습니다.
array array_diff_uassoc ( array $array1 , array $array2 , callable $key_compare_func )
$ array1 : 이것은 첫 번째 배열이며 다른 배열과 비교됩니다.
$ array2 : 이것은 일반적으로 하나 이상의 배열을 비교 해야하는 배열입니다.
$ key_compare_func : 이것은 두 배열 요소의 키를 비교하는 사용자 정의 콜백 기능입니다. 함수는 두 개의 키를 인수로 받아들이고 비교 결과를 반환해야합니다.
질문의 핵심으로 돌아가서 Array_Diff_Uassoc ()를 사용할 때 원래 배열의 키 순서가 보존됩니까 ?
답은 : 예, Array_Diff_Uassoc ()는 원래 배열의 키 순서를 보존합니다 . 배열 차이 작동을 수행 할 때 Array_Diff_Uassoc () 는 첫 번째 배열 ( $ array1 )과 원래 키 순서의 두 번째 배열에 존재하지 않는 리턴 요소를 반복합니다. 즉, $ array1 의 핵심 순서는 중단되지 않습니다.
우리는 다음 예를 통해 이것을 시연 할 수 있습니다.
<?php
$array1 = [
0 => 'a',
1 => 'b',
2 => 'c',
3 => 'd'
];
$array2 = [
0 => 'a',
2 => 'c'
];
$result = array_diff_uassoc($array1, $array2, 'strcasecmp');
print_r($result);
?>
Array
(
[1] => b
[3] => d
)
위에서 볼 수 있듯이 Array_diff_uassoc () 함수는 $ array1 배열에서 키 1 과 3 의 순서를 성공적으로 유지하고 $ array2 에 존재하지 않는 요소를 반환합니다. 이것은 원래 배열의 키 순서가 변경되지 않았 음을 보여줍니다.
array_diff_uassoc () 의 구현은 php의 array_diff () 함수를 기반으로하기 때문입니다. Array_Diff () 함수에 의해 반환 된 배열은 첫 번째 배열 (예 : $ array1 )의 순서로 배열되며 Array_Diff_Uassoc ()는 이 기준으로 주요 비교 함수를 추가합니다. 따라서 자연스럽게 원래 배열의 키 순서를 유지합니다.
Array_diff_uassoc ()는 원래 배열의 키 순서를 유지하지만 다음 점에주의를 기울여야합니다.
두 번째 배열 ( $ array2 )의 요소가 첫 번째 배열에서와 동일한 키를 포함하는 경우 두 번째 배열에서의 위치에 관계없이 이러한 요소가 차이 결과에서 제거됩니다.
결과 배열을 정렬 해야하는 경우 PHP는 필요에 따라 결과를 정렬하기 위해 ksort () 또는 asort () 와 같은 여러 기능을 제공합니다.
Array_Diff_Uassoc ()을 사용하면 원래 배열의 키 순서가 보존됩니다. 이는 특히 차수 차수 배열 또는 일부 순서를 유지 해야하는 연관 배열을 처리 할 때 키 순서가 엉망이되지 않도록 해야하는 상황에 유용합니다.