PHP의 데이터 처리, 특히 캐시 구조의 설계 및 최적화에서 Array_change_key_case () 함수는 종종 무시됩니다. 그러나 그 역할을 깊이 이해한다면, 어떤 시나리오에서 실제로 중요한 역할을 할 수 있다는 것을 알게 될 것입니다. 오늘 우리는이 기능의 실제 중요성에 대해 이야기 할 것입니다.
정의를 간단히 검토해 봅시다.
array array_change_key_case(array $array, int $case = CASE_LOWER);
이 함수는 모든 키 이름을 배열의 소문자 또는 대문자로 변환합니다. 기본 변환은 소문자 ( Case_Lower )이며 Case_Upper가 지정되면 대문자입니다.
예:
$data = [
'Name' => 'Alice',
'AGE' => 25,
'Email' => 'alice@example.com'
];
$normalized = array_change_key_case($data, CASE_LOWER);
/*
[
'name' => 'Alice',
'age' => 25,
'email' => 'alice@example.com'
]
*/
캐시 시스템 (예 : Redis, Memcached 또는 File Cache)을 사용할 때는 종종 많은 수의 연관 배열을 캐시합니다. 이 배열의 데이터는 종종 데이터베이스 필드, API 인터페이스 반환 값, 수동으로 조립 된 데이터 등과 같은 다른 데이터 소스에서 나옵니다.
문제는 다른 소스의 이러한 데이터의 주요 이름이 일관성이없고 일부는 대문자를 사용하고 일부는 소문자를 사용하며 일부는 낙타와 혼합되어 있다는 것입니다. 예를 들어:
[
'UserID' => 123,
'username' => 'bob',
'EMAIL' => 'bob@example.com'
]
예를 들어이 구조를 Redis로 직접 캐시하는 경우 다음과 같습니다.
$key = 'user:123';
$redis->set($key, json_encode($data));
읽기 중에 데이터 비교 또는 업데이트가 수행되면 오류가 발생하기 쉽습니다. $ data [ '이메일']를 사용하여 값을 얻고 캐시 구조가 실제로 이메일임을 잊어 버리려고 할 가능성이 높습니다.
상류 및 소문자가있는 통합 키 이름은 구조적 최적화의 핵심이됩니다.
캐시 전에 처리하십시오.
$normalizedData = array_change_key_case($data, CASE_LOWER);
$redis->set($key, json_encode($normalizedData));
또한 읽은 후에도 일관되게 처리됩니다.
$data = json_decode($redis->get($key), true);
$data = array_change_key_case($data, CASE_LOWER);
이러한 방식으로, 데이터가 어떤 소스에서 나오는지 또는 원래 구조가 얼마나 지저분하든 비즈니스 코드에서 $ data [ 'email'] 및 $ data [ 'userId']를 사용하는 것이 안전하며 정의되지 않은 인덱스 오류를 유발하는 사례 차이에 대해 걱정할 필요가 없습니다.
데이터를 캐시 할 때 여러 번 다음과 같은 여러 숫자를 결합해야합니다.
$fromDb = ['UserID' => 100, 'UserName' => 'Tom'];
$fromApi = ['userid' => 100, 'email' => 'tom@m66.net'];
직접 Array_Merge ()를 직접 사용하면 키 이름이 통합되지 않았으며 결과가 반복되거나 혼란 스러울 수 있습니다.
$merged = array_merge($fromDb, $fromApi);
/*
[
'UserID' => 100,
'UserName' => 'Tom',
'userid' => 100,
'email' => 'tom@m66.net'
]
*/
처리 전 통합 키 이름은 훨씬 더 명확합니다.
$fromDb = array_change_key_case($fromDb, CASE_LOWER);
$fromApi = array_change_key_case($fromApi, CASE_LOWER);
$merged = array_merge($fromDb, $fromApi);
/*
[
'userid' => 100,
'username' => 'Tom',
'email' => 'tom@m66.net'
]
*/
캐시 처리 전에 인터페이스 데이터의 키 이름 : 캡슐화 된 캐시 쓰기 방법에 Array_change_key_case ($ data) 를 추가하여 후속 호환성 문제를 크게 줄입니다.
캐시 된 데이터는 통합 키 이름으로도 읽습니다 .
데이터베이스 필드를 매핑 할 때 통합 된 사례 : ORM 또는 SQL 쿼리는 데이터를 쿼리하며 균일하게 처리하는 것이 좋습니다.
Array_change_key_case () 자체는 복잡하지는 않지만 캐시 데이터 구조의 최적화에서 실제로 "침묵하고 무음"의 역할을 수행 할 수 있습니다. 특히 팀 협업 및 장기 시스템 유지 보수에서 통합 키 이름 스타일은 "얇은 공기에서 나타나는 버그"를 피할 수 있습니다.
따라서 그것을 과소 평가하지 말고 시스템의 견고성을 향상시키는 데 작은 세부 사항 일 수 있습니다.