2017-02-09 10 views
0

座標からgoogle geocode api経由で情報を取得しようとしています。PHP Googleマップ - API(エコーすることはできません)

私のPHPコードはでした:

$lat="54.1456123"; 
$long = "10.413456"; 

$adgetg = file_get_contents("http://maps.googleapis.com/maps/api/geocode/json?latlng=$lat,$long&sensor=false"); 
$address = json_decode($adgetg); 
echo $address->short_name; 

そして完全な配列は:

stdClass Object ([results] => Array ( 
     [0] => stdClass Object ([address_components] => Array ( 
       [0] => stdClass Object ( 
         [long_name] => Prinzeninsel 
         [short_name] => Prinzeninsel 
         [types] => Array ( 
           [0] => route) 
         ) 
       [1] => stdClass Object ( 
         [long_name] => Plön 
         [short_name] => Plön 
         [types] => Array ( 
           [0] => locality 
           [1] => political) 
         ) 
       ) 
     ) 
     ) 

私はecho $address->short_name;を使用しようとすると、私はエラー お知らせ得る:未定義のプロパティ:はstdClass :: $ SHORT_NAME

ありがとうございます。

答えて

0

あなたのデータはアレイのオブジェクトを含むオブジェクトあるので、あなたは、より具体的にあなたの要求を構築する必要があります。

$address->$results[0]->$address_components[0]->short_name 

^^^^  ^^^^^ ^^  ^^^^   ^^^  ^^^^ 
Object  Array ^^  ^^^^   Array  ^^^^ 
      Key (Object) ^^^^   Key  ^^^^ 
          Array  (Object) Property 

上記結果アレイの配置0(要素)に座っているオブジェクトのshort_name proopertyを返します。

print_rまたはvar_dumpのJSONオブジェクトの出力を使用すると、アクセスルート(上記の図)を使い分けて、使用する要素に簡単にアクセスできるようになります。代わりに

$address = json_decode($adgetg); 

使用

$address = json_decode($adgetg, true); 

0

あなたはこのコードを試すことができます:Googleからの

foreach($address->results as $value) 
{ 
    foreach($value as $val) 
    { 
     if (is_array($val) || is_object($val)) 
     { 
      foreach($val as $v) 
      { 
       if(isset($v->short_name)) 
       print_r($v->short_name); 
      } 
     } 
    } 
} 
+0

私は、これらのキー "SHORT_NAME" に関連した値であり、出力 PrinzeninselPlönPlönSHDE24306PlönPlönSHDE24306RathjensdorfPlönSHDEPlönSHDESHDEDE –

+0

を取得します。それはあなたが検索したかったものです、そうですか? –

+0

私はちょうどPrinzeninselを得ることができますか? –

0

は、あなたの代わりにstdClass Objectの配列を取得します、これを行います。

$lat="54.1456123"; 
$long = "10.413456"; 

$adgetg = file_get_contents("http://maps.googleapis.com/maps/api/geocode/json?latlng=$lat,$long&sensor=false"); 
$address = json_decode($adgetg, true); 
echo $address['results'][0]['address_components'][0]['short_name']; 

または使用この

echo $address->results[0]->address_components[0]->short_name; 
関連する問題