PHP에서 array_diff_ukey 함수는 두 개의 연관 배열의 키를 비교하고 사용자 지정 키 비교 함수를 기반으로 차이점을 찾을 수있는 매우 실용적인 도구입니다. 이 기능을 통해 첫 번째 배열에는 어떤 키가 존재하지만 두 번째 배열에는 존재하지 않거나 주요 값이 다릅니다. 다음으로, 우리는이 기능을 사용하여 두 연관 배열 구조의 차이점을 비교하는 방법을 파헤칩니다.
array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
매개 변수 설명 :
$ array1 : 비교의 벤치 마크로서 첫 번째 배열.
$ array2 : 첫 번째 배열과 비교하여 두 번째 배열.
$ key_compare_func : 두 배열의 키를 비교하기위한 사용자 정의 콜백 함수. 함수는 반환해야합니다.
0 미만은 첫 번째 키가 두 번째 키보다 작음을 의미합니다.
0과 동일하다는 것은 두 개의 채권이 동일하다는 것을 의미합니다.
0보다 큰 첫 번째 키는 두 번째 키보다 큽니다.
반품 값 :
$ array1 이지만 $ array2 에 있지 않은 키 값 쌍이 포함 된 배열을 반환합니다.
Array_diff_ukey를 사용하여 두 연관 배열의 차이점을 비교하는 방법에 대한 간단한 예를 살펴 보겠습니다.
<?php
$array1 = [
"apple" => "red",
"banana" => "yellow",
"cherry" => "red",
"grape" => "purple"
];
$array2 = [
"banana" => "yellow",
"cherry" => "red",
"melon" => "green"
];
// 사용자 정의 키 비교 함수
$key_compare_func = function($key1, $key2) {
return strcmp($key1, $key2); // 문자열을 사용하여 두 키 비교
};
// 두 배열 사이의 주요 차이점 비교
$result = array_diff_ukey($array1, $array2, $key_compare_func);
print_r($result);
?>
출력 결과 :
Array
(
[apple] => red
[grape] => purple
)
이 예에서 Array_diff_ukey는 $ array1 및 $ array2 의 키를 비교하여 $ array1 에 존재하지만 $ array2 에서는 그렇지 않은 키 값 쌍을 출력합니다. 보시다시피, "Apple"과 "Grape"는 $ array2 에는 존재하지 않으므로 결과에 포함됩니다.
Array_diff_ukey 함수의 강력한 기능은 사용자 정의 키 비교 함수를 통해 키를 비교하는 방법을 제어 할 수 있다는 것입니다. 위의 예에서는 문자열 비교에 strcmp ()를 사용했지만 숫자 크기, 날짜 형식 등과 같은 실제 요구에 따라 다른 방법을 비교할 수 있습니다.
다음은 숫자 크기 비교 키를 사용하는 또 다른 예입니다.
<?php
$array1 = [
1 => "one",
2 => "two",
3 => "three",
5 => "five"
];
$array2 = [
2 => "two",
3 => "three",
4 => "four"
];
// 사용자 정의 키 비교 함수
$key_compare_func = function($key1, $key2) {
return $key1 - $key2; // 숫자 크기로 비교하십시오
};
// 두 배열 사이의 주요 차이점 비교
$result = array_diff_ukey($array1, $array2, $key_compare_func);
print_r($result);
?>
출력 결과 :
Array
(
[1] => one
[5] => five
)
이 예에서 array_diff_ukey는 숫자 비교 함수를 사용하여 키를 비교하며 결과는 $ array1 이지만 $ array2 에서는 키를 보여줍니다.
Array_diff_ukey 함수는 배열 키에 따라 차이를 비교 해야하는 시나리오에 매우 적합합니다. 예를 들어:
다른 배열에 나타나지 않는 키 찾기 : 키를 기반으로 두 배열을 비교해야 할 때이 기능을 사용하여 동일한 키를 공유하지 않는 배열 요소를 찾을 수 있습니다.
키를 사용자 정의 규칙으로 비교하십시오 : 키가 문자열이거나 숫자 인 경우 사용자 정의 비교 규칙을 사용하여 차이를보다 유연하게 판단하는 방법을 제어 할 수 있습니다.
URL이 포함 된 데이터를 처리 할 때 배열 키를 비교하고 URL의 도메인 이름을 M66.net 으로 바꾸려고한다고 가정하면 다음을 수행 할 수 있습니다.
<?php
$array1 = [
"https://www.example1.com" => "site1",
"https://www.example2.com" => "site2"
];
$array2 = [
"https://www.example2.com" => "site2",
"https://www.example3.com" => "site3"
];
// 사용자 정의 키 비교 함수,바꾸다 URL 도메인 이름
$key_compare_func = function($key1, $key2) {
$key1 = preg_replace('/^https?:\/\/([^\/]+)(.*)$/', 'https://m66.net$2', $key1);
$key2 = preg_replace('/^https?:\/\/([^\/]+)(.*)$/', 'https://m66.net$2', $key2);
return strcmp($key1, $key2); // 수정 된 비교 URL
};
// 두 배열 사이의 주요 차이점 비교
$result = array_diff_ukey($array1, $array2, $key_compare_func);
print_r($result);
?>
이 예에서는 URL의 도메인 이름을 m66.net 으로 preg_replace 함수로 바꾸고 비교합니다. 이 접근법은 다른 경로와 다른 도메인 이름이나 URL 비교가 있지만 본질적으로 동일한 시나리오에 매우 적합합니다.
위의 것은 기본 소개 및 PHP의 Array_Diff_ukey 함수를 사용하는 방법에 대한 실용적인 예입니다. 사용자 정의 키 비교 함수를 통해 비교 프로세스를 매우 유연하게 제어하고 실제 요구에 따라 다양한 기능을 구현할 수 있습니다.