현재 위치: > 최신 기사 목록> Array_change_key_case ()를 배열에서 지정된 키만 변환하는 방법은 무엇입니까?

Array_change_key_case ()를 배열에서 지정된 키만 변환하는 방법은 무엇입니까?

M66 2025-04-24

PHP에서 array_change_key_case () 함수는 배열의 모든 키 이름을 소문자 또는 대문자로 쉽게 변환 할 수 있습니다. 그러나 때때로 우리는 전체 어레이의 모든 키를 변환하고 싶지 않지만 변환하기 만하면됩니다. 현재이 목표를 달성하려면 약간의 트릭이 필요합니다.

이 기사에서는 배열에서 지정된 키에 대해 array_change_key_case () 함수를 "정확하게"사용할 수있는 메소드를 소개합니다.

질문 예제

다음 배열이 있다고 가정합니다.

 $data = [
    'Name' => 'Alice',
    'AGE' => 25,
    'Gender' => 'Female',
    'Country' => 'Canada'
];

우리는 단지 이름국가 의 주요 이름을 소문자로 변환하고 싶고 나머지는 동일하게 유지됩니다. 표준 array_change_key_case ($ data, case_lower)는 모든 키를 변경하여 분명히 우리의 요구를 충족시키지 못합니다.

해결책 : 지정된 키를 수동으로 작동합니다

배열을 반복하고 현재 키가 지정한 목록에 있는지 확인하고, 그렇다면 케이스 변환을 수행 한 다음 배열을 재건 할 수 있습니다.

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

    foreach ($array as $key => $value) {
        if (in_array($key, $keysToChange)) {
            $newKey = ($case === CASE_UPPER) ? strtoupper($key) : strtolower($key);
        } else {
            $newKey = $key;
        }
        $result[$newKey] = $value;
    }

    return $result;
}

사용 예제

 $data = [
    'Name' => 'Alice',
    'AGE' => 25,
    'Gender' => 'Female',
    'Country' => 'Canada'
];

$keysToChange = ['Name', 'Country'];

$modified = change_selected_keys_case($data, $keysToChange, CASE_LOWER);

print_r($modified);

출력 결과 :

 Array
(
    [name] => Alice
    [AGE] => 25
    [Gender] => Female
    [country] => Canada
)

보시다시피 이름국가 만 소문자로 변환되고 다른 키는 변경되지 않았습니다.

추가 지침

중첩 어레이를 처리해야하거나 키 이름의 일치가 대소 문자를 사용해야하는 경우 StrtOlower ()를 사용하여 키 이름 등을 비교하는 등 기능을 추가로 최적화 할 수 있습니다.

또한 기능을 콜백 함수 지원과 같은보다 일반적인 버전으로 변환하여 특정 키를 변환할지 여부를 결정할 수도 있습니다.

 function change_keys_with_callback(array $array, callable $shouldChange, int $case = CASE_LOWER): array {
    $result = [];

    foreach ($array as $key => $value) {
        $newKey = $shouldChange($key) ? 
            (($case === CASE_UPPER) ? strtoupper($key) : strtolower($key)) : 
            $key;

        $result[$newKey] = $value;
    }

    return $result;
}

사용 예 :

 $modified = change_keys_with_callback($data, function($key) {
    return in_array($key, ['Name', 'Country']);
});

요약

PHP는 지정된 키에 대해서만 Array_change_key_case ()를 사용하는 기본 지원이 없지만 간단한 트래버스 및 판단 논리를 통해 동일한 효과를 얻을 수 있습니다. 이 방법은 유연성 일뿐 만 아니라 실제 개발 시나리오에 매우 적합한 변환 로직을 제어 할 수 있습니다.

배열 처리 또는 PHP 도구 기능에 관심이 있으시면 더 많은 튜토리얼 및 실제 도구는 사이트를 방문하십시오.