현재 위치: > 최신 기사 목록> 재귀 방법을 사용하여 다차원 배열의 Array_Diff_Assoc ()를 구현하십시오

재귀 방법을 사용하여 다차원 배열의 Array_Diff_Assoc ()를 구현하십시오

M66 2025-06-06

두 개의 다차원 배열이 있다고 가정 해 봅시다.이 두 배열을 비교하고 첫 번째 배열에 나타나지 만 두 번째 배열에는 존재하지 않는 요소를 반환하려고합니다. 배열의 각 레이어를 통해 재귀 적으로 반복하고 비교를 위해 array_diff_assoc ()를 수행 할 수 있습니다.

다음은 PHP를 사용하여 Array_Diff_Assoc ()를 재귀 적으로 구현하기위한 샘플 코드입니다.

 <?php

/**
 * 다차원 배열을 재귀 적으로 구현합니다 array_diff_assoc() 기능
 *
 * @param array $array1 첫 번째 배열
 * @param array $array2 두 번째 배열
 * @return array 두 배열의 차이를 반환합니다
 */
function recursive_array_diff_assoc($array1, $array2) {
    $difference = array();

    // 遍历첫 번째 배열
    foreach ($array1 as $key => $value) {
        // 如果두 번째 배열没有此键,또는이 키의 값은 다릅니다
        if (!array_key_exists($key, $array2)) {
            // 값이 배열 인 경우,재귀 비교
            $difference[$key] = is_array($value) ? recursive_array_diff_assoc($value, array()) : $value;
        } else {
            // 값이 배열 인 경우,재귀 비교
            if (is_array($value) && is_array($array2[$key])) {
                $recursive_diff = recursive_array_diff_assoc($value, $array2[$key]);
                if (!empty($recursive_diff)) {
                    $difference[$key] = $recursive_diff;
                }
            } elseif ($value !== $array2[$key]) {
                // 값이 다른 경우,차이를 추가하십시오
                $difference[$key] = $value;
            }
        }
    }

    return $difference;
}

// 예제 배열
$array1 = array(
    'a' => 1,
    'b' => array(
        'x' => 2,
        'y' => 3
    ),
    'c' => 4
);

$array2 = array(
    'a' => 1,
    'b' => array(
        'x' => 2,
        'y' => 4
    ),
    'c' => 5
);

// 재귀 방법을 호출합니다
$result = recursive_array_diff_assoc($array1, $array2);

// 인쇄 결과
print_r($result);

?>

코드 구문 분석

  1. recursive_array_diff_assoc () 함수 :

    • 이 기능은 두 개의 배열을 매개 변수로 사용합니다 : $ array1$ array2 .

    • Foreach 의 첫 번째 어레이에서 각 키 값 쌍을 가로 지릅니다.

    • 각 요소에 대해 먼저 키가 두 번째 배열에 포함되어 있는지 확인하고 그렇지 않은 경우 요소를 리턴 결과에 직접 추가하십시오.

    • 요소가 배열 인 경우 recursive_array_diff_assoc ()를 사용하여 다차원 배열을 계속 비교합니다.

    • 마지막으로 모든 다른 요소가 반환됩니다.

  2. 재귀 처리 :

    • 배열 요소를 만나면 동일한 함수를 재귀 적으로 호출하여 다차원 배열의 각 층이 비교되도록합니다.

    • 발생하는 요소가 기본 데이터 유형 (예 : 정수, 문자열 등) 인 경우 그 값을 직접 비교합니다.

  3. 결과 출력 :

    • print_r ($ result)는 결과를 출력하는 데 사용됩니다. 이 예에서 $ array1$ array2를 비교 한 후, 출력은 둘 사이의 차이를 포함합니다.

샘플 출력

 Array
(
    [b] => Array
        (
            [y] => 3
        )
    [c] => 4
)

요약

재귀 모드를 통해 PHP에서 다차원 배열의 array_diff_assoc () 함수를 구현할 수 있습니다. 이 방법을 사용하면 배열에 중첩 된 서브 어레이가있는 경우에도 각 레벨의 키 이름과 값의 차이를 올바르게 처리 할 수 ​​있습니다.