開発プロセス中に、JSON 形式のデータを PHP 配列に変換する必要が生じることがよくあります。この必要性は、フロントエンドと対話するとき、他のシステムインターフェイスからデータを受信するときなどに非常に一般的です。この記事では、PHPでJSONデータをPHP配列に変換する方法を紹介します。
PHP には、JSON 形式の文字列を PHP 配列に変換できる組み込み関数 json_decode() があります。次に、json_decode() 関数の使用例を示します。
$json = '{"name":"john","age":30,"city":"New York"}'; $array = json_decode($json, true); print_r($array);
出力結果は次のとおりです。
Array ( [name] => john [age] => 30 [city] => New York )
上記の例では、$json は JSON 形式の文字列で、$array はjson_decode( ) 関数を使用すると、$json が PHP 配列に変換されます。 json_decode() 関数の 2 番目のパラメーターは true である必要があることに注意してください。これは、変換された JSON オブジェクトを PHP 配列に変換することを意味します。
中国語を含む JSON データを処理するときは、文字エンコーディングの問題に注意する必要があります。そうしないと、変換プロセス中にエラーが発生する可能性があります。 。
以下に示すように、中国語を含む JSON 文字列があるとします。
$json = '{"name":"张三","age":30}';
上記のコードを使用して JSON 文字列を PHP 配列に変換すると、通知エラーが生成され、プロンプトが表示されます。 「json_decode(): 入力文字列に無効な UTF-8 文字が含まれています」 (JSON 文字列に無効な UTF-8 文字が含まれています)。
これは、json_decode() 関数がデフォルトで UTF-8 エンコードのみをサポートしており、JSON 文字列内の中国語の文字が GBK または他のエンコード方法でエンコードされているため、UTF-8 に変換する必要があるためです。エンコードしてから JSON 変換します。
PHP 組み込み関数 iconv() を使用して、文字列を GBK から UTF-8 エンコーディングに変換します:
$json = '{"name":"张三","age":30}'; $json_utf8 = iconv('GBK', 'UTF-8//IGNORE', $json); $array = json_decode($json_utf8, true); print_r($array);
結果の出力は次のとおりです:
Array ( [name] => 张三 [age] => 30 )
JSON データを変換する場合、予想される構造と形式に準拠していることを確認するために検証が必要になる場合があります。
PHP には、最後の JSON 変換操作によって生成されたエラー コードを取得できる組み込み関数 json_last_error() があります。エラーコードに基づいて、JSON データが期待どおりであるかどうかを判断できます。
たとえば、次のコードは、不正な JSON 文字列を変換するときに、それが期待どおりであるかどうかを判断する方法を示しています。
$json = '{"name":"john","age":30,}, {"name":"mike","age":32}'; $array = json_decode($json, true); if (json_last_error() === JSON_ERROR_NONE) { echo 'JSON 格式正确'; } else { echo 'JSON 格式错误'; }
上記のコードでは、$json には 2 つの JSON オブジェクトが含まれています。カンマは、JSON 形式のエラーです。したがって、 json_last_error() 関数は、JSON 構文エラーを示す JSON_ERROR_SYNTAX を返します。
JSON データを処理する際、デバッグや読み取りを容易にするために、JSON データにインデントや改行を追加することもできます。読みやすくなります。
PHP の組み込み関数 json_encode() は、PHP 配列をより読みやすい JSON 形式の文字列に変換できます。例:
$array = [ 'name' => 'john', 'age' => 30, 'city' => 'New York' ]; $json = json_encode($array, JSON_PRETTY_PRINT); echo $json;
出力結果は次のとおりです:
{ "name": "john", "age": 30, "city": "New York" }
上記のコードでは、$array を JSON 形式の文字列に変換した後、JSON_PRETTY_PRINT パラメーターを渡します。文字列はインデントされ、読みやすくするために改行が処理されます。
json_encode() 関数のパラメータ JSON_PRETTY_PRINT は、PHP バージョン 5.4 以降でのみサポートされていることに注意してください。
概要
PHP では、組み込み関数 json_decode() を使用して、JSON 形式の文字列を PHP 配列に変換できます。中国語を含む JSON データを処理する場合は、文字エンコードの問題に注意する必要があります。JSON データを変換する場合は、期待どおりかどうかを検証する必要があります。JSON データを生成する場合は、 json_encode() 関数を使用して可読性を最適化できます。
以上はJSONをPHP配列に変換する方法ですが、実際の開発の参考になれば幸いです。
以上がPHPでJSONデータを配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。