ホームページ >バックエンド開発 >PHPチュートリアル >PHP と MySQL は JSON 内のネストされたループ データをどのように処理しますか?
PHP と MySQL は JSON 内のネストされたループ データをどのように処理しますか?
現代の Web 開発では、JavaScript Object Notation (JSON) を使用してデータを送信および保存することが一般的な方法になっています。 JSON は、読み書きが簡単な軽量のデータ交換形式であり、さまざまなプログラミング言語でサポートされています。 PHP と MySQL では、JSON データの処理とネストされたループの実行が一般的なタスクです。この記事では、PHP で JSON データを処理し、MySQL でネストされたループ クエリを実行する方法を紹介します。
まず、サンプルの JSON データを見てみましょう:
{ "students": [ { "name": "Alice", "age": 20, "subjects": [ { "name": "Math", "score": 85 }, { "name": "English", "score": 92 } ] }, { "name": "Bob", "age": 22, "subjects": [ { "name": "Math", "score": 78 }, { "name": "English", "score": 95 } ] } ] }
PHP では、json_decode
関数を使用して、JSON 文字列を PHP 配列またはオブジェクトにデコードできます。上記のサンプル JSON データをデコードする方法のサンプル コードは次のとおりです。
$jsonString = '{ "students": [ { "name": "Alice", "age": 20, "subjects": [ { "name": "Math", "score": 85 }, { "name": "English", "score": 92 } ] }, { "name": "Bob", "age": 22, "subjects": [ { "name": "Math", "score": 78 }, { "name": "English", "score": 95 } ] } ] }'; $data = json_decode($jsonString, true); // 将JSON字符串解码为关联数组
上記のコードでは、json_decode
の 2 番目のパラメーターを true
に設定します。連想配列にデコードされた JSON 文字列。 false
に設定するかパラメータを省略した場合は、オブジェクトとしてデコードされます。
PHP では、ループを使用して連想配列を走査し、ネストされた JSON データを処理できます。上記のサンプル データを処理する方法のサンプル コードは次のとおりです。
foreach ($data['students'] as $student) { echo "Name: " . $student['name'] . "<br>"; echo "Age: " . $student['age'] . "<br>"; foreach ($student['subjects'] as $subject) { echo "Subject: " . $subject['name'] . "<br>"; echo "Score: " . $subject['score'] . "<br>"; } echo "<br>"; }
上記のコードでは、まず ['students'] を介して配列の
students キーにアクセスします。
そしてそれをループします。各生徒の名前と年齢には、['name']
キーと ['age']
キーを使用してアクセスできます。次に、['subjects']
配列をループして、各主題の名前とスコアにアクセスします。
MySQL では、ネストされた SELECT ステートメントを使用して、ネストされた JSON データをクエリできます。上記のサンプル データをクエリする方法のサンプル コードは次のとおりです。
SELECT students.name AS student_name, subjects.name AS subject_name, subjects.score FROM students, JSON_TABLE(students.data, '$.students[*]' COLUMNS ( name VARCHAR(50) PATH '$.name', age INT PATH '$.age', data JSON PATH '$.subjects' )) AS subjects
上記のコードでは、まず students の
name と
data## をクエリします。 テーブル #リスト。次に、
JSON_TABLE 関数を使用して、
data 列をネストされた JSON データに解析し、結果に
subjects という名前を付けます。
JSON_TABLE 関数の 2 番目のパラメーターでは、
'$students[*]' を使用してパスを指定し、
data 列配列からネストされたものを選択します。
COLUMNS 句では、クエリ対象の列とそのデータ型とパスを指定します。
json_decode 関数とループ トラバーサルを通じて、PHP でネストされた JSON データを処理できます。ネストされた SELECT ステートメントと
JSON_TABLE 関数を使用すると、MySQL でネストされた JSON データをクエリできます。これらの手法は、複雑な JSON データ構造を処理する場合に非常に役立ちます。
以上がPHP と MySQL は JSON 内のネストされたループ データをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。