현재 위치: > 최신 기사 목록> array_change_key_case ()가 숫자 키를 처리 할 수 ​​있습니까?

array_change_key_case ()가 숫자 키를 처리 할 수 ​​있습니까?

M66 2025-05-12

PHP에서는 배열을 처리 할 때, 특히 외부 소스 (예 : 양식, API 반환 등)에서 얻은 연관 배열 데이터를 처리 할 때 주요 사례 변환이 필요합니다. Array_change_key_case ()는 배열 키 이름의 경우를 통합하는 데 사용되는 함수입니다. 그러나 종종 간과되지만 상당히 중요한 문제는 다음과 같습니다.

Array_change_key_case ()가 배열에서 "숫자 키"의 경우를 변경 합니까 ?

대답은 다음과 같습니다.

공식 문서 설명

공식 PHP 문서 에 따르면 array_change_key_case () 의 역할은 다음과 같습니다.

키가 대문자 또는 소문자로 변환되는 어레이를 반환합니다.

그러나 이것은 문자열 유형 키에만 적용되며 숫자 키의 경우 함수가 수정되지 않습니다.

예제 설명

다음은 실제 행동을 보여주는 예입니다.

 <?php
$data = [
    "Name" => "Alice",
    "EMAIL" => "alice@example.com",
    100 => "일련 번호",
    "AGE" => 30
];

$result = array_change_key_case($data, CASE_LOWER);

print_r($result);
?>

출력 결과 :

 Array
(
    [name] => Alice
    [email] => alice@example.com
    [100] => 일련 번호
    [age] => 30
)

당신은 볼 수 있습니다 :

  • 모든 문자열 키 (예 : "이름" , "이메일" , "Age" )는 소문자로 성공적으로 변환됩니다.

  • 숫자 키 100은 변하지 않으며, 현악기 나 변화가되지는 않습니다.

숫자 키가 변경되지 않는 이유는 무엇입니까?

PHP에서는 숫자가 사안이 없기 때문입니다. PHP의 배열 키는 문자열 또는 정수 (적분) 일 수 있습니다. 사례 변환은 본질적으로 문자열에만 유효합니다. 따라서 array_change_key_case ()는 키가 문자열 인 요소 만 처리합니다.

실제 응용 시나리오의 예

API 요청을 통해 배열 데이터 세트를 반환하고 키 이름을 균일하게 처리하려면이 기능을 사용할 수 있습니다. 그러나 과정에서 숫자 인덱스의 키가 문자열로 잘못 변환되거나 변경되는 것에 대해 걱정할 필요가 없습니다. 예를 들어:

 <?php
$json = '{
    "UserID": 101,
    "Username": "bob",
    "Scores": {
        "0": 90,
        "1": 85,
        "2": 88
    }
}';

$data = json_decode($json, true);
$data = array_change_key_case($data, CASE_LOWER);

// 산출 JSON 프론트 엔드로 구조
echo json_encode($data);
?>

프론트 엔드는 영향을받지 않고 .Scores [0]를 사용하여 데이터에 여전히 액세스 할 수 있습니다.

배열에서 중첩 구조를 추가로 처리 해야하는 경우 (예 : 모든 레벨에서 키 이름을 소문자로 재귀 적으로 변환하는 등) 재귀 기능을 캡슐화 할 수 있지만 여전히 숫자 키에 대해 걱정할 필요가 없습니다.

 function array_change_key_case_recursive($arr, $case = CASE_LOWER) {
    return array_map(function ($item) use ($case) {
        if (is_array($item)) {
            return array_change_key_case_recursive($item, $case);
        }
        return $item;
    }, array_change_key_case($arr, $case));
}

요약

  • ? array_change_key_case ()는 문자열 키 에만 유효합니다.

  • ? 배열에서 숫자 키를 수정 하지 않습니다 .

  • ?? 숫자 키는 PHP에서 엄격하게 정수이며 상단 및 소문 이론이 없습니다.

  • ?? 중첩 된 배열을 재귀 적으로 처리 해야하는 경우 재귀 함수를 수동으로 캡슐화하여 문자열 키를 처리해야합니다.

이런 식으로, 당신은 개발 중에 array_change_key_case ()를 마음의 평화와 함께 사용할 수 있습니다.