현재 위치: > 최신 기사 목록> Array_change_key_case () 및 array_walk_recursive () 다차원 배열을 처리합니다

Array_change_key_case () 및 array_walk_recursive () 다차원 배열을 처리합니다

M66 2025-04-24

PHP 배열 데이터, 특히 외부 인터페이스의 데이터를 처리 할 때 문제가 종종 발생합니다. 이 상황은 배열을 병합, 검색 또는 매핑 할 때 많은 문제를 일으킬 수 있습니다. 다행스럽게도 PHP는 array_change_key_case ()Array_Walk_Recursive () 와 같은 몇 가지 유용한 기능을 제공하여 통합 키 이름 변환의 목표를 달성하는 데 도움이됩니다.

그러나 문제는 다음과 같습니다. array_change_key_case ()는 1 차원 배열 만 처리 할 수 ​​있지만 Array_walk_Recursive ()는 다차원 배열의 모든 값을 가로 질러 가야하지만 키 이름을 직접 수정할 수는 없습니다. 그렇다면이 두 기능을 결합하여 다차원 배열에서 키 이름의 통합 된 케이스를 지원하는 솔루션을 구현할 수 있습니까?

대답은 : 예! 재귀 방법을 사용하여 각 레이어의 각 계층에 침투하고 각 레이어에 대해 Array_change_key_case ()를 사용할 수 있으므로 전체 다차원 배열의 키 이름 변환을 구현할 수 있습니다.

샘플 코드 : 균일 키 이름은 소문자입니다

 <?php

function change_array_keys_case_recursive(array $arr, int $case = CASE_LOWER): array {
    $result = [];

    foreach ($arr as $key => $value) {
        $newKey = ($case === CASE_LOWER) ? strtolower($key) : strtoupper($key);

        if (is_array($value)) {
            $result[$newKey] = change_array_keys_case_recursive($value, $case);
        } else {
            $result[$newKey] = $value;
        }
    }

    return $result;
}

// 예제 배열(상단 및 소문자와 혼합 된 키가 포함되어 있습니다.)
$data = [
    'UserName' => 'alice',
    'Email' => 'alice@m66.net',
    'Details' => [
        'Age' => 28,
        'Country' => 'Canada',
        'Preferences' => [
            'Theme' => 'Dark',
            'LANGUAGE' => 'EN'
        ]
    ]
];

// 모든 키 이름을 소문자로 통합하십시오
$normalized = change_array_keys_case_recursive($data);

print_r($normalized);
?>

출력 결과 :

 Array
(
    [username] => alice
    [email] => alice@m66.net
    [details] => Array
        (
            [age] => 28
            [country] => Canada
            [preferences] => Array
                (
                    [theme] => Dark
                    [language] => EN
                )
        )
)

아이디어 분석

  • Array_change_key_case () 는 키 이름 케이스 변환을 처리하기위한 PHP 소유 도구이지만 1 차원 배열 만 지원합니다.

  • Array_Walk_Recursive ()는 배열 (키가 아님)에서 값을 수정하는 데 적합하므로 여기서는 이상적이지 않습니다.

  • 맞춤형 재귀 함수는 각 배열 계층의 처리를 구현할 수있는 현재 최적 솔루션입니다.

  • 강력한 확장 성 : 수신 $ Case 매개 변수를 수정하여 Case_Upper 변환을 지원하여 대문자로 변환하십시오.

결론

PHP가 제공하는 기능은 기본적으로 자체 제한 사항을 가지고 있지만, 기능을 합리적으로 결합하고 커스터마이징 함으로써 복잡한 시나리오에보다 강력하고 적응 가능한 솔루션을 구축 할 수 있습니다. 외부 입력 또는 청소 데이터가 균일하게 처리 해야하는 시나리오의 경우이 방법은 실용적 일뿐 만 아니라 가독성과 유지 관리가 우수합니다.

복잡한 인터페이스 데이터를 다루거나 개발 중에 자주 일관되지 않은 주요 이름을 만나면 통합 변환을위한이 방법을 시도 할 수도 있습니다.