現在の位置: ホーム> 最新記事一覧> array_change_key_case()は、json_encode()とjson_decode()を組み合わせたアプリケーションです

array_change_key_case()は、json_encode()とjson_decode()を組み合わせたアプリケーションです

M66 2025-04-24

PHPでは、配列キー名の場合、特にJSONデータまたはAPIからデータを処理する場合、データを処理するときに何らかの矛盾を引き起こす可能性があります。キー名の形式を統合するために、 array_change_key_case()関数を使用して、arrayキー名を小文字または大文字に統合できます。

ネストされた配列またはオブジェクトを扱っている場合、 array_change_key_case()だけに依存するだけでは十分ではありません。この時点で、 json_encode()json_decode()を使用して、より深い処理を実現できます。この記事では、簡単な例を使用して、配列キー名の統一変換を実装する方法を示します。

1。関数の紹介

1。array_change_key_case()

この関数は、配列内のすべてのキー名を大文字または小文字に変換できます。

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

パラメーター$ caseを次のように設定できます。

  • case_lower (デフォルト):小文字に変換します

  • case_upper :大文字に変換します

2。json_encode()およびjson_decode()

これらの2つの機能は、PHPアレイとJSON文字列を互いに変換でき、データの送信と処理に使用されることがよくあります。データをJSONにエンコードしてから配列にデコードすると、特にキー名の再帰処理が簡単に操作できるようになります。

2。実用的なケース:配列のすべてのキー名を小文字に再帰的に変換する

インターフェイス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"
    }
}

3。JSON_ENCODEとJSON_DECODEを一致させることの実際的な重要性

あなたは尋ねるかもしれません:なぜ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);

4。概要

json_encode( )およびjson_decode()を使用してarray_change_key_case( )を使用することにより、マルチレイヤーネストされたアレイキー名の統合ケース変換を簡単に実装できます。このアプローチは、APIデータ、構成項目、または大規模なデータ構造を処理する場合に特に実用的であり、データ処理の一貫性と堅牢性を大幅に改善できます。

キー名の変換または統合形式を処理する必要がある場合は、このトリックをPHPツールボックスに追加することもできます。