PHP에서 키 이름의 사례 변환이 일반적인 요구 사항입니다. 특히 사용자 입력 또는 외부 데이터를 처리 할 때 사례가 일치하지 않을 수 있으며 통합 형식이 필요합니다. 일반적인 관행에는 array_change_key_case () 함수 사용 또는 배열을 수동으로 이동하고 키 이름의 경우를 하나씩 수정하는 것이 포함됩니다. 이 기사는이 두 가지 방법의 성능을 비교하여 개발자가보다 적절한 선택을 할 수 있도록 도와줍니다.
PHP의 내장 array_change_key_case () 함수는 배열의 모든 키 이름의 경우를 변경하는 데 사용됩니다. 이 기능은 두 가지 매개 변수를 수용합니다.
첫 번째 매개 변수는 작동 할 배열입니다.
두 번째 매개 변수는 키 이름을 대문자 또는 소문자로 변환할지 여부를 지정하는 선택적 플래그입니다. 기본적으로 키 이름은 소문자로 변환됩니다.
기능 프로토 타입은 다음과 같습니다.
array array_change_key_case ( array $array , int $case = CASE_LOWER )
$ case 매개 변수가 case_upper 로 설정되면 키 이름이 대문자로 변환됩니다. 그렇지 않으면 기본값이 소문자로 변환됩니다.
$array = ['FirstName' => 'John', 'LastName' => 'Doe'];
$lowercaseArray = array_change_key_case($array, CASE_LOWER);
print_r($lowercaseArray);
산출:
Array
(
[firstname] => John
[lastname] => Doe
)
키 이름 케이스 변환을 구현하는 또 다른 방법은 배열을 수동으로 통과하고 키 이름의 경우를 하나씩 수정하는 것입니다. 이 방법은 각 배열 요소를 통해 반복하고 키 이름 을 수동으로 조정하려면 array_map () 와 같은 구조를 사용해야합니다.
$array = ['FirstName' => 'John', 'LastName' => 'Doe'];
foreach ($array as $key => $value) {
$newKey = strtolower($key); // 또는 strtoupper($key) 대문자 변환
$newArray[$newKey] = $value;
}
print_r($newArray);
산출:
Array
(
[firstname] => John
[lastname] => Doe
)
이 두 가지 방법의 효율성을 비교하기 위해 PHP의 마이크로 타임 () 함수를 사용하여 각 방법의 실행 시간을 기록 할 수 있습니다. 간단한 성능 테스트 코드는 다음과 같습니다.
// 더 큰 배열을 준비하십시오
$array = [];
for ($i = 0; $i < 100000; $i++) {
$array['Key' . $i] = 'Value' . $i;
}
// 시험 array_change_key_case()
$startTime = microtime(true);
array_change_key_case($array, CASE_LOWER);
$endTime = microtime(true);
echo "array_change_key_case() 실행 시간: " . ($endTime - $startTime) . " 두번째\n";
// 시험수동 횡단
$startTime = microtime(true);
$newArray = [];
foreach ($array as $key => $value) {
$newKey = strtolower($key); // 소문자를 돌립니다
$newArray[$newKey] = $value;
}
$endTime = microtime(true);
echo "수동 횡단 실행 시간: " . ($endTime - $startTime) . " 두번째\n";
array_change_key_case () 의 장점 :
코드는 간결하고 이해하기 쉽습니다.
더 작은 어레이의 경우 성능에 문제가 거의 없거나 전혀 없습니다.
내장 함수의 실행 효율은 일반적으로 배열이 클 때 수동 트래버스보다 낫습니다.
수동 트래버스의 장점 :
일부 특별한 경우 더 큰 유연성을 제공 할 수 있습니다. 예를 들어, 케이스를 변환하는 동안 키 이름으로 다른 복잡한 작업을 수행해야 할 수도 있습니다.
키 이름의 변환 방법 (특정 규칙에 따라 키 이름의 부분 변환)을 정확하게 제어 할 수 있습니다.
대부분의 일반 시나리오의 경우 array_change_key_case ()는 더 간단하고 효율적인 선택입니다. 내부 구현은 최적화되며 일반적으로 특히 큰 배열을 처리 할 때 수동 트래버스보다 빠르게 실행됩니다. 그러나 키 이름을보다 유연하게 처리 해야하는 특수 시나리오에서는 수동 트래버스도 좋은 선택입니다.
성능 관점에서 순전히 고려하면 Array_change_key_case () 는 의심 할 여지없이 더 빠른 솔루션, 특히 대규모 데이터 작업과 관련하여 더 빠른 솔루션입니다. 일부 간단한 작업의 경우 불필요한 트래버스 작업을 피하면 내장 기능을 사용하는 것이 일반적으로 더 효율적입니다.