PHPでは、配列キー名の場合、特にJSONデータまたはAPIからデータを処理する場合、データを処理するときに何らかの矛盾を引き起こす可能性があります。キー名の形式を統合するために、 array_change_key_case()関数を使用して、arrayキー名を小文字または大文字に統合できます。
ネストされた配列またはオブジェクトを扱っている場合、 array_change_key_case()だけに依存するだけでは十分ではありません。この時点で、 json_encode()とjson_decode()を使用して、より深い処理を実現できます。この記事では、簡単な例を使用して、配列キー名の統一変換を実装する方法を示します。
この関数は、配列内のすべてのキー名を大文字または小文字に変換できます。
array_change_key_case(array $array, int $case = CASE_LOWER): array
パラメーター$ caseを次のように設定できます。
case_lower (デフォルト):小文字に変換します
case_upper :大文字に変換します
これらの2つの機能は、PHPアレイとJSON文字列を互いに変換でき、データの送信と処理に使用されることがよくあります。データをJSONにエンコードしてから配列にデコードすると、特にキー名の再帰処理が簡単に操作できるようになります。
インターフェイスhttps://api.m66.net/user/profileから次のデータを取得するとします。
$data = [
"UserID" => 123,
"UserName" => "Alice",
"ContactInfo" => [
"Email" => "alice@m66.net",
"Phone" => "1234567890"
]
];
すべてのキー名(ネストを含む)を均一に小文字に変換したいと考えています。解決策は次のとおりです。
function array_change_key_case_recursive(array $arr, int $case = CASE_LOWER): array {
$result = [];
foreach ($arr as $key => $value) {
$key = ($case === CASE_UPPER) ? strtoupper($key) : strtolower($key);
if (is_array($value)) {
$result[$key] = array_change_key_case_recursive($value, $case);
} else {
$result[$key] = $value;
}
}
return $result;
}
// サンプルデータ
$data = [
"UserID" => 123,
"UserName" => "Alice",
"ContactInfo" => [
"Email" => "alice@m66.net",
"Phone" => "1234567890"
]
];
// 小文字のキー名に変換します
$lowercased = array_change_key_case_recursive($data, CASE_LOWER);
echo json_encode($lowercased, JSON_PRETTY_PRINT);
出力の結果は次のとおりです。
{
"userid": 123,
"username": "Alice",
"contactinfo": {
"email": "alice@m66.net",
"phone": "1234567890"
}
}
あなたは尋ねるかもしれません:なぜarray_change_key_case()を直接使用しないのですか?主な理由は、ネストされた配列を再帰的に処理できないことです。 json_encode()およびjson_decode()を介して、オブジェクトは配列形式に変換でき、各レイヤーのキー名を再帰的に処理できます。
たとえば、 https://api.m66.net/data/infoから受け取ったものはオブジェクト構造であり、次の方法を使用して変換および処理できます。
$json = '{
"UserID": 456,
"UserProfile": {
"FullName": "Bob",
"Contact": {
"Email": "bob@m66.net"
}
}
}';
$array = json_decode($json, true); // 配列に変換します
$normalized = array_change_key_case_recursive($array, CASE_LOWER);
echo json_encode($normalized, JSON_PRETTY_PRINT);
json_encode( )およびjson_decode()を使用してarray_change_key_case( )を使用することにより、マルチレイヤーネストされたアレイキー名の統合ケース変換を簡単に実装できます。このアプローチは、APIデータ、構成項目、または大規模なデータ構造を処理する場合に特に実用的であり、データ処理の一貫性と堅牢性を大幅に改善できます。
キー名の変換または統合形式を処理する必要がある場合は、このトリックをPHPツールボックスに追加することもできます。