2011-12-16 4 views
3

私はJSONを使い慣れていて、解析中です。 Google Elevation APIから標高をリクエストすると、次の結果が得られます。PHPを使用したGoogle高度の解析

{ 
    "status": "OK", 
    "results": [ { 
    "location": { 
     "lat": 39.7391536, 
     "lng": -104.9847034 
    }, 
    "elevation": 1608.8402100 
    } ] 
} 

解析する際に、json_decodeの結果を使用して標高を効果的に参照する方法がわかりません。私の要約したコードは以下の通りです:

$json_string = file_get_contents($url); 
$parsed_json = json_decode($json_string); 
$geoElevation = $parsed_json->{'elevation'}; 

上記のように「elevation」の値にアクセスできない理由を教えていただけますか?

答えて

3

あなたのデータ構造の優れた視覚化を得るためにprint_r($parsed_json)を使用する必要があります。

$parsed_json 
(
    [status] => OK 
    [results] => Array 
     (
      [0] => Array 
       (
        [location] => Array 
         (
          [lat] => 39.739153600000001631542545510456 
          [lng] => -104.98470340000000078362063504755 
         )  
        [elevation] => 1608.8402100000000700674718245864 
       ) 
     ) 
) 

これはjson_decode($json_string, TRUE);を使用することによって得る配列、です。これにより、エントリをトラバースするのが容易になります。あなたが望むあなたのケースで

print $parsed_json["results"][0]["elevation"]; 

通常は、数値のレベル以上のforeachしたいと思います。しかし、1つの結果しか期待できない場合は、[0]を使用すると問題はありません。

$json_string = file_get_contents($url); 
$parsed_json = json_decode($json_string); 

echo $parsed_json->results[0]->elevation; 

たり、配列を使用して好む場合:

+0

ありがとうございました。だから私はそれを間違って参照しています。私は使用していた他のメソッドではなく、Arrayとして解析する必要がありますか? – user1077894

+0

いいえ、あなたはそれをする必要はありません。しかしそれはしばしばそれをより簡単にします。 - その構文に従ってBOZsの答えを見てください。構造は変わりません。 – mario

4

はこのお試しください

$json_string = file_get_contents($url); 
$parsed_json = json_decode($json_string, TRUE); 

echo $parsed_json['results'][0]['elevation']; 

を第二引数:

TRUEは、オブジェクトが連想配列に変換されます返されました。 json_encodeマニュアル

+2

私は配列1が好きで、操作が簡単です – zackaryka

関連する問題