현재 위치: > 최신 기사 목록> array_change_key_case ()를 사용할 때의 위험 동일한 키가 포함 된 배열 프로세스

array_change_key_case ()를 사용할 때의 위험 동일한 키가 포함 된 배열 프로세스

M66 2025-04-25

php에서 array_change_key_case ()는 배열의 모든 키 이름을 소문자 또는 대문자로 변환하는 매우 실용적인 기능입니다. 그러나 실제 개발에서 때때로 우리는 키 이름이 다른 배열을 처리하지만 '이름''이름' 과 같은 내용이 동일합니다. Array_change_key_case ()를 사용하면 어떻게됩니까?

기능 소개

 array_change_key_case(array $array, int $case = CASE_LOWER): array

이 기능은 두 가지 매개 변수를 수용합니다.

  • $ 배열 : 처리 할 배열;

  • $ CASE : 변환의 대상 사례 유형은 Case_Lower (소문자)이며 Case_Upper (상류)로 변경할 수 있습니다.

리턴 값은 키 이름이 변환 된 새 배열이며 원래 배열은 수정되지 않습니다.

키 이름이 상충 될 때의 행동

원래 배열에 키 이름이 다르지만 동일한 컨텐츠가있는 여러 키가있는 경우 :

 $array = [
    "Name" => "Alice",
    "name" => "Bob"
];

실행할 때 :

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

출력은 다음과 같습니다.

 Array
(
    [name] => Bob
)

보시다시피, "이름""이름"은 소문자로 변환 한 후 "이름" 이됩니다. 이 시점에서 후속 키 값은 이전 값을 덮어 씁니다. 따라서 유지되는 마지막 것은 "이름"=> "Bob" 입니다.

다시 말해, 키 이름이 충돌 할 때 다음 키 값은 이전의 값을 덮어 씁니다 .

응용 프로그램 시나리오 알림

이 동작은 다른 소스의 데이터 합병을 처리 할 때 특히 중요합니다. 예를 들어:

 $userData = [
    "Email" => "alice@m66.net",
    "email" => "duplicate@m66.net"
];

$cleanedData = array_change_key_case($userData, CASE_LOWER);
print_r($cleanedData);

결과는 다음과 같습니다.

 Array
(
    [email] => duplicate@vv99.net
)

이로 인해 데이터를 의도하지 않게 덮어 쓸 수 있으므로 이에 대해 걱정이되면 변환 전에 키 이름 충돌을 확인하거나 더 미묘한 접근 방식 (예 : 트래버스 및 수동 감지)을 사용하는 것이 좋습니다.

요약

array_change_key_case ()를 사용하여 키 이름의 상부 및 하부 사례를 통합하고 코드 일관성을 향상시킵니다. 그러나 배열이 다른 경우 다른 컨텐츠가있는 배열에 키 이름이 있으면 변환 후 충돌하며 후속 값은 이전 값을 덮어 씁니다 . 이 기능을 사용할 때는 이러한 유형의 상황, 특히 데이터 통합 ​​또는 사용자 입력과 관련된 데이터 구조에서주의해서 처리해야합니다.