0

これは初歩的な質問のように思えますが、ここでキーボードに頭をぶつけているだけで、先に進むための答えがまだ見つかりません。

シナリオは、Google Maps API でジオコーディングして、郵便番号の緯度/経度を取得しようとしています。Google Maps API から結果を JSON 文字列として取得し、json_decode を使用してそれを PHP 配列に入れました。しかし、それはオブジェクトの配列のように見え、緯度/経度の値を取得するためにデータをドリルダウンする方法に困惑しています。

これが現在のロードブロックです...コードの結果は次のとおりです。

<?php
$jsonData = '{"results":[{"address_components":[{"long_name":"33647","short_name":"33647","types":["postal_code"]},{"long_name":"Tampa","short_name":"Tampa","types":["locality","political"]},{"long_name":"Florida","short_name":"FL","types":["administrative_area_level_1","political"]},{"long_name":"United States","short_name":"US","types":["country","political"]}],"formatted_address":"Tampa, FL 33647, USA","geometry":{"bounds":{"northeast":{"lat":28.17150,"lng":-82.26235779999999},"southwest":{"lat":28.07291710,"lng":-82.42569910}},"location":{"lat":28.14343180,"lng":-82.33433749999999},"location_type":"APPROXIMATE","viewport":{"northeast":{"lat":28.17150,"lng":-82.26235779999999},"southwest":{"lat":28.07291710,"lng":-82.42569910}}},"types":["postal_code"]}],"status":"OK"}';
$phpArray = json_decode($jsonData);
print_r($phpArray);

foreach ($phpArray as $key => $value) { 
    echo "<p>$key | $value</p>";
}
?>

結果:

stdClass Object ( [results] => Array ( [0] => stdClass Object ( [address_components] => Array ( [0] => stdClass Object ( [long_name] => 33647 [short_name] => 33647 [types] => Array ( [0] => postal_code ) ) [1] => stdClass Object ( [long_name] => Tampa [short_name] => Tampa [types] => Array ( [0] => locality [1] => political ) ) [2] => stdClass Object ( [long_name] => Florida [short_name] => FL [types] => Array ( [0] => administrative_area_level_1 [1] => political ) ) [3] => stdClass Object ( [long_name] => United States [short_name] => US [types] => Array ( [0] => country [1] => political ) ) ) [formatted_address] => Tampa, FL 33647, USA [geometry] => stdClass Object ( [bounds] => stdClass Object ( [northeast] => stdClass Object ( [lat] => 28.1715 [lng] => -82.2623578 ) [southwest] => stdClass Object ( [lat] => 28.0729171 [lng] => -82.4256991 ) ) [location] => stdClass Object ( [lat] => 28.1434318 [lng] => -82.3343375 ) [location_type] => APPROXIMATE [viewport] => stdClass Object ( [northeast] => stdClass Object ( [lat] => 28.1715 [lng] => -82.2623578 ) [southwest] => stdClass Object ( [lat] => 28.0729171 [lng] => -82.4256991 ) ) ) [types] => Array ( [0] => postal_code ) ) ) [status] => OK )

results | Array

status | OK

入力 JSON の作成に使用される URL:

http://maps.googleapis.com/maps/api/geocode/json?address=33647&sensor=false

緯度と経度の値を PHP 変数に取り出すための助けを探しています。

前もって感謝します!ジョシュ

4

1 に答える 1

1

結果の値は実際には別の配列です。そのため、必要な値を取得するには配列を掘り下げる必要があります。

このページ (http://json.parser.online.fr/) は、データをもう少し明確に視覚化するのに役立つ場合があります。

深さを示すためのデータのひどい例を次に示します (配列を値として):

<?php
$jsonData = '{"results":[{"address_components":[{"long_name":"33647","short_name":"33647","types":["postal_code"]},{"long_name":"Tampa","short_name":"Tampa","types":["locality","political"]},{"long_name":"Florida","short_name":"FL","types":["administrative_area_level_1","political"]},{"long_name":"United States","short_name":"US","types":["country","political"]}],"formatted_address":"Tampa, FL 33647, USA","geometry":{"bounds":{"northeast":{"lat":28.17150,"lng":-82.26235779999999},"southwest":{"lat":28.07291710,"lng":-82.42569910}},"location":{"lat":28.14343180,"lng":-82.33433749999999},"location_type":"APPROXIMATE","viewport":{"northeast":{"lat":28.17150,"lng":-82.26235779999999},"southwest":{"lat":28.07291710,"lng":-82.42569910}}},"types":["postal_code"]}],"status":"OK"}';
$phpArray = json_decode($jsonData,true);
print_r($phpArray);

foreach ($phpArray as $key => $value) {
    if ( $key == "results") {
        foreach ($value as $key2 => $value2) {
            foreach ($value2 as $key3 => $value3) {
                echo "<p>$key3 | $value3</p>";
            }
        }
    }
}
?>

必要なすべてのデータを見つけるには、いくつかのレベルを掘り下げる必要があります。ただし、これは正しい方向を示しているはずです。

于 2012-12-03T06:03:32.643 に答える