php에서 array_diff_ukey () 및 array_diff_key ()는 배열의 주요 이름을 비교하고 키 이름 차이를 반환하는 데 사용되는 함수입니다. 이 두 기능의 기능은 매우 유사하지만 사용 방법에는 몇 가지 큰 차이가 있습니다. 이 기사에서는이 두 기능의 차이점을 자세히 설명하고 실제 개발에서 응용 프로그램을 보여줍니다.
Array_Diff_Key () 함수는 두 개 이상의 배열의 키 이름을 비교하는 데 사용되며 첫 번째 배열에는 있지만 다른 배열에는 있지 않은 키 이름과 키 값 쌍을 반환합니다. 즉, 키 이름이 다른 배열에 존재하지 않는 모든 요소를 반환합니다.
array_diff_key(array $array1, array $array2, array ...$arrays): array
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3
];
$array2 = [
'b' => 5,
'd' => 6
];
$result = array_diff_key($array1, $array2);
print_r($result);
Array
(
[a] => 1
[c] => 3
)
이 예에서 Array_Diff_Key () 함수는 Array $ array1 에 존재하지만 $ array2 에는 존재하지 않는 키 값 쌍을 반환합니다.
Array_diff_ukey () 함수는 array_diff_key () 와 유사하지만 사용자가 콜백 함수를 전달하여 키 이름을 비교할 수 있습니다. 이는 특히 사용자 정의 키 이름 비교 규칙이 필요한 경우 더 많은 유연성을 제공합니다.
array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3
];
$array2 = [
'A' => 5,
'B' => 6
];
// 사용자 정의 키 이름 비교 함수
$key_compare_func = function ($key1, $key2) {
return strtolower($key1) <=> strtolower($key2);
};
$result = array_diff_ukey($array1, $array2, $key_compare_func);
print_r($result);
Array
(
[c] => 3
)
이 예에서는 array_diff_ukey ()가 사용자 정의 콜백 함수를 기반으로 키 이름을 비교합니다. 콜백 함수는 strtolower를 사용하여 키 이름을 소문자와 비교하고 결과는 $ array2 에 동일한 소문자 키 이름이 없기 때문에 키 이름 C 요소 만 반환합니다.
키 이름 비교 방법 :
Array_Diff_Key ()는 PHP의 기본 비교 방법을 직접 사용하여 배열의 주요 이름을 비교합니다.
Array_diff_ukey ()를 사용하면 사용자가 키 이름에 대한 비교 규칙을 사용자 정의 할 수 있으며 콜백 함수를 전달하여 사용자 정의 키 이름 비교를 구현할 수 있습니다.
유연성:
Array_Diff_Key ()는 사용자 정의 키 이름 비교 규칙을 허용하지 않으며 비교는 PHP의 기본 평등 비교를 기반으로합니다.
Array_diff_ukey () 는 더 유연하며 콜백 함수를 통해 사용자 정의 키 이름 비교 방법을 정의 할 수 있습니다.
응용 프로그램 시나리오 :
array_diff_key ()는 키 이름이 직접 같은 경우에 적합합니다.
Array_diff_ukey ()는 키 이름이 상류 및 소문자 무시, 일부 알고리즘에 따라 비교 등 사용자 지정 비교 규칙이 필요한 상황에 적합합니다.
실제 개발에서 Array_diff_key ()는 사용하기 간단하고 가장 일반적인 배열 비교 시나리오에 적합하기 때문에 더 일반적으로 사용됩니다. Array_diff_ukey ()는 키 이름의 경우를 무시하거나 다른 사용자 정의 비교 작업을 수행하는 것과 같은 특별한 요구에 적합합니다.
키 이름이 실제로 동일한 두 개의 배열이 있지만 하나의 어레이에는 대문자가 있고 다른 배열은 소문자라고 가정합니다. 이 경우 array_diff_ukey ()를 사용하여 케이스를 무시하고 키 이름을 비교할 수 있습니다.
$array1 = [
'apple' => 1,
'banana' => 2
];
$array2 = [
'APPLE' => 3,
'BANANA' => 4
];
// 사례 비교를 무시하십시오
$key_compare_func = function ($key1, $key2) {
return strtolower($key1) <=> strtolower($key2);
};
$result = array_diff_ukey($array1, $array2, $key_compare_func);
print_r($result);
Array
(
)
이 예에서는 키 이름 Apple 과 Apple이 동일하게 간주되므로 결과는 빈 배열을 반환하여 두 배열의 주요 이름에 차이가 없음을 나타냅니다.
Array_diff_key ()는 정기적 인 키 이름 차이에 적합한 배열의 키 이름을 비교하는 간단하고 직접적인 방법입니다.
Array_diff_ukey ()는 더 많은 유연성을 제공하여 특수 비교 로직이 필요한 시나리오에 적합한 사용자 정의 키 이름 비교 규칙을 허용합니다.
선택할 기능은 귀하의 요구에 따라 다릅니다. 키 이름의 직접 평등을 비교 해야하는 경우 Array_diff_key () 로 충분합니다. 더 복잡한 비교 규칙이 필요한 경우 Array_diff_ukey ()가 더 나은 선택이됩니다.