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 도구 기능에 관심이 있으시면 더 많은 튜토리얼 및 실제 도구는 웹 사이트를 방문하십시오.