毎日の開発では、サードパーティのインターフェイスからJSONデータを取得することがよくあります。ただし、これらのインターフェイスによって返されるデータ内のキー名のケース形式は一貫性がなく、一部は資本から始まり、一部はすべて資本またはすべて小文字です。この一貫性のないキー名形式は、フィールド抽出、統一マッピング、オブジェクトへの配列変換など、その後のデータの処理に多くの問題を引き起こします。
幸いなことに、PHPは非常に実用的な機能を提供します: array_change_key_case()は、配列のキー名をエレガントかつ効率的に統合するのに役立ち、この問題を解決します。
array_change_key_case()は、PHPの組み込み関数であり、アレイ内のすべてのキー名の上限および小文字または大文字のケースを変換するために使用されます。
array_change_key_case(array $array, int $case = CASE_LOWER): array
$配列:処理する連想配列。
$ case :ターゲットケースタイプを変換し、 case_lower (デフォルト)は小文字に変換することを意味し、 case_upperは大文字に変換されます。
例として、本物のJSON文字列を使用して、上限と小文字でキー名をエレガントに統一する方法を示しましょう。
{
"UserID": 101,
"UserName": "Alice",
"Email": "alice@example.com"
}
ご覧のとおり、キー名はケースミックスされています。便利なために処理するときは、すべてを小文字に変換したいと考えています。
<?php
// これがインターフェイスからであると仮定します https://api.m66.net/user 取得したデータ
$json = '{
"UserID": 101,
"UserName": "Alice",
"Email": "alice@example.com"
}';
// 最初のステップ:意思 JSON 連想配列に変換します
$data = json_decode($json, true);
// ステップ2:使用 array_change_key_case() 意思键名统一转为小写
$normalized = array_change_key_case($data, CASE_LOWER);
// 出力処理された配列
print_r($normalized);
/*
出力結果:
Array
(
[userid] => 101
[username] => Alice
[email] => alice@example.com
)
*/
?>
このようにして、 $ remarized ['username']およびその他の方法を使用して、キー名の一貫性のないケースの問題を心配することなく値を取得できます。
JSONが多層ネスト構造である場合、 Array_Change_Key_Case()を使用するだけで最初のレイヤーを処理でき、すべてのレベルを処理するために再帰関数をカプセル化する必要があります。
function array_keys_to_lower_recursive(array $array): array {
$result = [];
foreach ($array as $key => $value) {
$key = is_string($key) ? strtolower($key) : $key;
$result[$key] = is_array($value) ? array_keys_to_lower_recursive($value) : $value;
}
return $result;
}
使用方法は上記に似ています。
$normalized = array_keys_to_lower_recursive($data);
JSONデータを処理してキーケースを統合したい場合、 array_change_key_case()はシンプルで効率的なツールです。再帰バージョンでは、より複雑なデータ構造を処理することもできます。これにより、コードの読みやすさが向上するだけでなく、メンテナンスコストも削減されます。