PHP では、次の手順で配列と JSON の間で変換できます。 配列を JSON に変換する: json_encode() 関数を使用します。 JSON を配列に変換する: json_decode() 関数を使用し、配列を返す true 引数を指定します。特殊文字の処理: json_encode() は特殊文字を自動的にエスケープしますが、手動でエスケープした後も注意が必要です。 Unicode 文字の処理: JSON_UNESCAPED_UNICODE フラグを使用して Unicode エスケープを有効にします。循環参照の処理: JSON_PARTIAL_OUTPUT_ON_ERROR フラグを有効にすると、循環参照が発生したときに部分的な JSON 出力を返すことができます。
PHP 配列から JSON への変換: FAQ
PHP では、配列と JSON (JavaScript Object Notation) が 2 つの一般的なデータ構造ですデータの保存と転送に広く使用されています。この記事では、配列と JSON の間で変換する際の一般的な複雑な問題を調査し、解決策を示すコード例を提供します。
質問 1: 配列を JSON に変換する
コード:
$array = ['name' => 'John Doe', 'age' => 30]; $json = json_encode($array);
質問 2: 配列の JSON を変換する
コード:
$json = '{"name": "John Doe", "age": 30}'; $array = json_decode($json, true);
注: true
パラメーターが省略された場合、json_decode
配列ではなくオブジェクトを返します。
質問 3: 特殊文字の処理
PHP の特殊文字 (引用符、バックスラッシュなど) は、JSON でエスケープする必要があります。 json_encode
関数はこの変換を自動的に実行しますが、変換前に配列を手動でエスケープする場合は注意が必要です。
コード:
$array = ['name' => 'John"Doe']; $json = json_encode($array); // 结果:{"name": "John\"Doe"}
質問 4: Unicode 文字の処理
Unicode 文字は、JSON エスケープ シーケンス表現では 16 進数である必要があります。 json_encode
この関数は、デフォルトではこの変換を実行しません。 Unicode エスケープを有効にするには、JSON_UNESCAPED_UNICODE
フラグを使用します。
コード:
$array = ['name' => '王小明']; $json = json_encode($array, JSON_UNESCAPED_UNICODE); // 结果:{"name": "\u738b\u5c0f\u660e"}
質問 5: 循環参照の処理
入れ子になったデータ構造内の循環参照により JSON 変換が失敗する。この問題を解決するには、JSON_PARTIAL_OUTPUT_ON_ERROR
フラグを有効にして、循環参照が発生したときに json_encode
が部分的な JSON 出力を返すようにします。
コード:
$array = ['name' => 'John Doe']; $array['self'] = &$array; $json = json_encode($array, JSON_PARTIAL_OUTPUT_ON_ERROR); // 仅输出部分 JSON 数据
実践例
以下は、ユーザー情報をPHP配列からJSONに変換して表示します。 HTML ページに表示されます 実際のケースは次のとおりです:
<?php $user = ['name' => 'John Doe', 'age' => 30, 'address' => '123 Main Street']; $json = json_encode($user); ?> <html> <head><title>用户信息</title></head> <body> <h1><?php echo $user['name']; ?></h1> <p>年龄:<?php echo $user['age']; ?></p> <p>地址:<?php echo $user['address']; ?></p> </body> </html>
以上がPHP 配列から JSON への変換: FAQの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。