web-dev-qa-db-ja.com

PHPを使用してJSONファイルからデータを取得する

私はPHPを使って以下のJSONファイルからデータを取得しようとしています。具体的には "temperatureMin"と "temperatureMax"が必要です。

それはおそらく本当に簡単ですが、私はこれを行う方法がわからない。私はfile_get_contents( "file.json")の後にするべきことに固執します。いくつかの助けは大歓迎です!

{
    "daily": {
        "summary": "No precipitation for the week; temperatures rising to 6° on Tuesday.",
        "icon": "clear-day",
        "data": [
            {
                "time": 1383458400,
                "summary": "Mostly cloudy throughout the day.",
                "icon": "partly-cloudy-day",
                "sunriseTime": 1383491266,
                "sunsetTime": 1383523844,
                "temperatureMin": -3.46,
                "temperatureMinTime": 1383544800,
                "temperatureMax": -1.12,
                "temperatureMaxTime": 1383458400,
            }
        ]
    }
}
99
Harold Dunn

file_get_contents() を使用してJSONファイルの内容を取得します。

$str = file_get_contents('http://example.com/example.json/');

今度は json_decode() を使ってJSONをデコードします。

$json = json_decode($str, true); // decode the JSON into an associative array

すべての情報を含む連想配列があります。必要な値にアクセスする方法を理解するために、次のことができます。

echo '<pre>' . print_r($json, true) . '</pre>';

これは配列の内容を見やすいフォーマットで表示します。 print_r()に(単に画面に表示されるのではなく)return edであることを知らせるために、2番目のパラメータがtrueに設定されていることに注意してください。次に、あなたが欲しい要素にアクセスします。

$temperatureMin = $json['daily']['data'][0]['temperatureMin'];
$temperatureMax = $json['daily']['data'][0]['temperatureMax'];

あるいは、配列をループしても構いません。

foreach ($json['daily']['data'] as $field => $value) {
    // Use $field and $value here
}

デモ!

236
Amal Murali

JSONをPHP配列に変換するには、 json_decode を使用します。例:

$json = '{"a":"b"}';
$array = json_decode($json, true);
echo $array['a']; // b
8
Guilherme Sehn
Try:
$data = file_get_contents ("file.json");
        $json = json_decode($data, true);
        foreach ($json as $key => $value) {
            if (!is_array($value)) {
                echo $key . '=>' . $value . '<br/>';
            } else {
                foreach ($value as $key => $val) {
                    echo $key . '=>' . $val . '<br/>';
                }
            }
        }
8
Indrajeet Singh