PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのforeachループでJSON配列を解析する方法

PHPでは、json_decode関数を使ってJSON形式の文字列を配列に変換し、foreachループで各要素にアクセスすることで、JSONデータを簡単に解析できます。以下に、JSONオブジェクトを連想配列として受け取り、foreachで値を取り出す基本的なコード例を示します。

サンプルコード

<?php
$json_array ='{
    "values": {
        "a": "abc",
        "d": 0,
        "efg": 349
    }
}';
$array = json_decode($json_array, true);
foreach($array as $values) {
    echo $values['efg'];
    echo $values['d'];
    echo $values['a'];
}

コードの解説

json_decode関数の第2引数にtrueを指定すると、JSONオブジェクトが連想配列に変換されます。省略した場合(デフォルトはfalse)は、stdClassオブジェクトとして返されるため、$values->efgのようにアロー演算子でアクセスすることになります。

この例では連想配列としてデコードしているため、foreachで「values」キーの内容を取得し、さらにキー名(adefg)を指定してそれぞれの値を出力しています。

出力結果

上記のコードを実行すると、次のような出力が得られます。

3490abc

エラー処理のポイント

JSON文字列が不正な場合、json_decodenullを返します。本番環境では、json_last_error()json_last_error_msg()を使ってデコードの成否を確認し、エラー時に適切な処理を行うことが推奨されます。

  1. PHPのtimezone_transitions_get()関数とは?使い方とサンプルコードを解説

    PHPのtimezone_transitions_get()関数は、指定したタイムゾーンにおけるすべての遷移(トランジション)情報を取得するための関数です。サマータイム(DST)への切り替えやUTCオフセットの変更履歴など、タイムゾーンに関する詳細なデータを配列として受け取ることができます。なお、この関数はPHP 5.3以降で利用可能であり、オブジェクト指向の書き方では DateTimeZone::getTransitions() メソッドに相当します。構文timezone_transitions_get(obj)パラメータobj − 遷移情報を取得したいタイムゾーンを表すDateTimeZo

  2. PHPのarray()関数とは?配列の作成方法をわかりやすく解説

    PHPのarray()関数は、配列を作成するための関数です。PHPにおける配列には、主に以下の3種類が存在します。インデックス配列 − 数値インデックス(0から始まる番号)で要素を管理する配列連想配列 − 文字列などの名前付きキーで要素を管理する配列多次元配列 − 配列の中に1つ以上の配列を含む、入れ子構造の配列構文// 数値インデックスを持つ配列(インデックス配列) array(value1, value2, ...); // 名前付きキーを持つ配列(連想配列) array(key1 => value1, key2 => value2, ...)パラメータvalue − 配列に