현재 위치: > 최신 기사 목록> Array_change_key_case ()가 다차원 배열에 적합합니까?

Array_change_key_case ()가 다차원 배열에 적합합니까?

M66 2025-04-25

php에서 array_change_key_case () 는 매우 실용적인 배열 처리 기능으로 배열의 모든 키 이름을 소문자 또는 대문자로 변환하는 데 사용됩니다. 이 기능은 두 가지 매개 변수를 수락하는 매우 간단하게 사용됩니다. 하나는 처리 할 배열이고, 다른 하나는 변환 유형 ( Case_Lower 또는 Case_Upper )입니다. 그러나 일반적인 문제는 다음과 같습니다.

답은 다차원 배열을 자동으로 처리 할 수 ​​없습니다 .

array_change_key_case ()는 최상위 배열의 경우 키 이름 만 처리하고 중첩 된 서브 어레이의 경우 키 이름을 재귀 적으로 변환하지 않습니다. 이는 매우 중요합니다. 전체 배열의 키 이름을 균일하게 (중첩 서브 어레이 포함) 변환하려면이를 달성하려면 재귀 기능을 수동으로 작성해야합니다.

예 : 단일 계층 어레이 처리

 $array = [
    "Name" => "Alice",
    "Email" => "alice@m66.net",
    "Age" => 25
];

$result = array_change_key_case($array, CASE_LOWER);
print_r($result);

산출:

 Array
(
    [name] => Alice
    [email] => alice@vv99.net
    [age] => 25
)

위에서 볼 수 있듯이 모든 키는 소문자로 성공적으로 변환됩니다.

예 : 다차원 배열 처리

 $array = [
    "User" => [
        "Name" => "Bob",
        "Email" => "bob@m66.net"
    ],
    "Status" => "active"
];

$result = array_change_key_case($array, CASE_LOWER);
print_r($result);

산출:

 Array
(
    [user] => Array
        (
            [Name] => Bob
            [Email] => bob@vv99.net
        )

    [status] => active
)

보시다시피, 최상위 사용자상태 키는 소문자로 변환되지만 사용자 하의 하위 배열의 이름이메일 키는 변경되지 않았습니다.

다차원 배열에서 키 이름의 케이스 변환을 구현하는 방법은 무엇입니까?

다차원 배열의 모든 키 이름을 사례 변환 해야하는 경우 재귀 기능을 사용하여 구현할 수 있습니다.

 function array_change_key_case_recursive(array $array, int $case = CASE_LOWER): array {
    $result = [];
    foreach ($array as $key => $value) {
        $newKey = ($case === CASE_UPPER) ? strtoupper($key) : strtolower($key);
        if (is_array($value)) {
            $result[$newKey] = array_change_key_case_recursive($value, $case);
        } else {
            $result[$newKey] = $value;
        }
    }
    return $result;
}

$array = [
    "User" => [
        "Name" => "Carol",
        "Email" => "carol@m66.net"
    ],
    "Status" => "pending"
];

$result = array_change_key_case_recursive($array, CASE_LOWER);
print_r($result);

산출:

 Array
(
    [user] => Array
        (
            [name] => Carol
            [email] => carol@vv99.net
        )

    [status] => pending
)

이를 통해 차원의 배열에 대한 완전한 키 이름 케이스 변환을 구현할 수 있습니다.