현재 위치: > 최신 기사 목록> PHP의 array_diff_ukey 함수를 사용하여 두 연관 배열 구조의 차이점을 비교하는 방법은 무엇입니까?

PHP의 array_diff_ukey 함수를 사용하여 두 연관 배열 구조의 차이점을 비교하는 방법은 무엇입니까?

M66 2025-06-15

PHP에서 array_diff_ukey 함수는 두 개의 연관 배열의 키를 비교하고 사용자 지정 키 비교 함수를 기반으로 차이점을 찾을 수있는 매우 실용적인 도구입니다. 이 기능을 통해 첫 번째 배열에는 어떤 키가 존재하지만 두 번째 배열에는 존재하지 않거나 주요 값이 다릅니다. 다음으로, 우리는이 기능을 사용하여 두 연관 배열 구조의 차이점을 비교하는 방법을 파헤칩니다.

1. 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 에는 존재하지 않으므로 결과에 포함됩니다.

3. 사용자 정의 키 비교 함수

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 에서는 키를 보여줍니다.

4. array_diff_ukey 함수를 사용한 시나리오

Array_diff_ukey 함수는 배열 키에 따라 차이를 비교 해야하는 시나리오에 매우 적합합니다. 예를 들어:

  • 다른 배열에 나타나지 않는 키 찾기 : 키를 기반으로 두 배열을 비교해야 할 때이 기능을 사용하여 동일한 키를 공유하지 않는 배열 요소를 찾을 수 있습니다.

  • 키를 사용자 정의 규칙으로 비교하십시오 : 키가 문자열이거나 숫자 인 경우 사용자 정의 비교 규칙을 사용하여 차이를보다 유연하게 판단하는 방법을 제어 할 수 있습니다.

5. 예제에서 URL 수정 설명

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 함수를 사용하는 방법에 대한 실용적인 예입니다. 사용자 정의 키 비교 함수를 통해 비교 프로세스를 매우 유연하게 제어하고 실제 요구에 따라 다양한 기능을 구현할 수 있습니다.