現在の位置: ホーム> 最新記事一覧> graphql api戻りデータでarray_change_key_case()を使用する方法は?

graphql api戻りデータでarray_change_key_case()を使用する方法は?

M66 2025-04-25

GraphQL APIを使用してデータを取得する場合、複雑な構造を持つネストされたアレイを扱うことがよくあります。 GraphQLはフィールド名のケーススタイル(CamelCase、Snake_Caseなど)を制限していないため、返されたデータには異なる形式でキー名が混合される可能性があります。 PHPでこれらのキー名のケースを統一したい場合、 array_change_key_case()は非常に実用的な機能です。

この記事では、GraphQL APIによって返されたデータを処理して均一に小文字または大文字のキー名の効果を実現する際に、再帰ロジックと組み合わせてarray_change_key_cease()関数を使用する方法を紹介します。

1。関数紹介: array_change_key_case()

array_change_key_case()は、配列のすべてのキー名を小文字または大文字に変換するPHPビルトイン関数です。

 array_change_key_case(array $array, int $case = CASE_LOWER): array
  • $ケースオプションパラメーター:

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

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

2。GRAPHQLデータの例

次のURLを介してGraphQLインターフェイスを要求して、記事のリストを取得するとします。

 $url = 'https://m66.net/graphql';

リクエストによって返されるJSONデータは次のとおりです。

 {
  "data": {
    "ArticleList": [
      {
        "ID": 101,
        "Title": "PHP Array Tricks",
        "Author": {
          "Name": "John Doe",
          "Email": "john@example.com"
        }
      }
    ]
  }
}

オブジェクトのネストされた配列が含まれていることがわかり、キー名は形式で一貫していません。

3。再帰的に統一されたキーネームケース関数

array_change_key_case()自体は多次元配列をサポートしていないため、ネストされた構造を処理するために再帰関数をカプセル化する必要があります。

 function change_keys_case_recursive(array $array, int $case = CASE_LOWER): array {
    $result = [];

    foreach ($array as $key => $value) {
        $newKey = ($case === CASE_UPPER) ? strtoupper($key) : strtolower($key);
        if (is_array($value)) {
            $result[$newKey] = change_keys_case_recursive($value, $case);
        } else {
            $result[$newKey] = $value;
        }
    }

    return $result;
}

4。完了例:GraphQL応答データの処理

<?php

// からのシミュレーション GraphQL インターフェイスの取得 JSON データ
$json = '{
    "data": {
        "ArticleList": [
            {
                "ID": 101,
                "Title": "PHP Array Tricks",
                "Author": {
                    "Name": "John Doe",
                    "Email": "john@example.com"
                }
            }
        ]
    }
}';

$data = json_decode($json, true);

// 小文字として統一されたキー名を持つカスタム関数を呼び出す
$normalizedData = change_keys_case_recursive($data, CASE_LOWER);

// 出力結果
print_r($normalizedData);

function change_keys_case_recursive(array $array, int $case = CASE_LOWER): array {
    $result = [];

    foreach ($array as $key => $value) {
        $newKey = ($case === CASE_UPPER) ? strtoupper($key) : strtolower($key);
        if (is_array($value)) {
            $result[$newKey] = change_keys_case_recursive($value, $case);
        } else {
            $result[$newKey] = $value;
        }
    }

    return $result;
}
?>

5.出力の結果は次のとおりです。

 Array
(
    [data] => Array
        (
            [articlelist] => Array
                (
                    [0] => Array
                        (
                            [id] => 101
                            [title] => PHP Array Tricks
                            [author] => Array
                                (
                                    [name] => John Doe
                                    [email] => john@example.com
                                )
                        )
                )
        )
)

ご覧のとおり、すべてのキー名は小文字に変換されます。これは、後続のデータ処理とテンプレートレンダリングをより助長します。

6。概要

array_change_key_case()と再帰ロジックを組み合わせてGraphQL APIによって返されるデータを処理する場合、大文字と小文字でキー名の均一性を簡単に実現できます。このような標準化された処理は、コードの読みやすさを向上させるだけでなく、ケースの矛盾によって引き起こされる潜在的なバグを回避します。キー名をプロジェクトのニーズに応じて小文字または大文字に変換することを選択し、柔軟に調整できます。