dongshui2254 2013-01-31 16:06
浏览 41
已采纳

如何使用PHP解析此Google JSON响应?

I want to know the place name by Lat / Lng. For that I found Google API. The program I write is

<?php

$url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng=13.74349%2C100.489067&sensor=false';

$data = json_decode(file_get_contents($url));

echo '<pre>';

print_r($data);

?>

The output is given below

Array
(
    [0] => stdClass Object
        (
            [results] => Array
                (
                    [0] => stdClass Object
                        (
                            [address_components] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [long_name] => Wang Doem 8
                                            [short_name] => Wang Doem 8
                                            [types] => Array
                                                (
                                                    [0] => route
                                                )

                                        )

                                    [1] => stdClass Object
                                        (
                                            [long_name] => Wat Arun
                                            [short_name] => Wat Arun
                                            [types] => Array
                                                (
                                                    [0] => sublocality
                                                    [1] => political
                                                )

                                        )

                                    [2] => stdClass Object
                                        (
                                            [long_name] => Bangkok Yai
                                            [short_name] => Bangkok Yai
                                            [types] => Array
                                                (
                                                    [0] => sublocality
                                                    [1] => political
                                                )

                                        )

                                    [3] => stdClass Object
                                        (
                                            [long_name] => Bangkok
                                            [short_name] => Bangkok
                                            [types] => Array
                                                (
                                                    [0] => locality
                                                    [1] => political
                                                )

                                        )

                                    [4] => stdClass Object
                                        (
                                            [long_name] => Thailand
                                            [short_name] => TH
                                            [types] => Array
                                                (
                                                    [0] => country
                                                    [1] => political
                                                )

                                        )

                                    [5] => stdClass Object
                                        (
                                            [long_name] => 10600
                                            [short_name] => 10600
                                            [types] => Array
                                                (
                                                    [0] => postal_code
                                                )

                                        )

                                )

                            [formatted_address] => Wang Doem 8, Wat Arun, Bangkok Yai, Bangkok 10600, Thailand
                            [geometry] => stdClass Object
                                (
                                    [bounds] => stdClass Object
                                        (
                                            [northeast] => stdClass Object
                                                (
                                                    [lat] => 13.7448616
                                                    [lng] => 100.4888865
                                                )

                                            [southwest] => stdClass Object
                                                (
                                                    [lat] => 13.7445018
                                                    [lng] => 100.4876895
                                                )

                                        )

                                    [location] => stdClass Object
                                        (
                                            [lat] => 13.7446807
                                            [lng] => 100.4882883
                                        )

                                    [location_type] => APPROXIMATE
                                    [viewport] => stdClass Object
                                        (
                                            [northeast] => stdClass Object
                                                (
                                                    [lat] => 13.7460306803
                                                    [lng] => 100.48963698
                                                )

                                            [southwest] => stdClass Object
                                                (
                                                    [lat] => 13.7433327197
                                                    [lng] => 100.48693902
                                                )

                                        )

                                )

                            [types] => Array
                                (
                                    [0] => route
                                )

                        )

                    [1] => stdClass Object
                        (
                            [address_components] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [long_name] => Wat Arun
                                            [short_name] => Wat Arun
                                            [types] => Array
                                                (
                                                    [0] => sublocality
                                                    [1] => political
                                                )

                                        )

                                    [1] => stdClass Object
                                        (
                                            [long_name] => Bangkok Yai
                                            [short_name] => Bangkok Yai
                                            [types] => Array
                                                (
                                                    [0] => sublocality
                                                    [1] => political
                                                )

                                        )

                                    [2] => stdClass Object
                                        (
                                            [long_name] => Bangkok
                                            [short_name] => Bangkok
                                            [types] => Array
                                                (
                                                    [0] => locality
                                                    [1] => political
                                                )

                                        )

                                    [3] => stdClass Object
                                        (
                                            [long_name] => Thailand
                                            [short_name] => TH
                                            [types] => Array
                                                (
                                                    [0] => country
                                                    [1] => political
                                                )

                                        )

                                    [4] => stdClass Object
                                        (
                                            [long_name] => 10600
                                            [short_name] => 10600
                                            [types] => Array
                                                (
                                                    [0] => postal_code
                                                )

                                        )

                                )

                            [formatted_address] => Wat Arun, Bangkok Yai, Bangkok 10600, Thailand
                            [geometry] => stdClass Object
                                (
                                    [bounds] => stdClass Object
                                        (
                                            [northeast] => stdClass Object
                                                (
                                                    [lat] => 13.7481218
                                                    [lng] => 100.4919267
                                                )

                                            [southwest] => stdClass Object
                                                (
                                                    [lat] => 13.7361885
                                                    [lng] => 100.4803822
                                                )

                                        )

                                    [location] => stdClass Object
                                        (
                                            [lat] => 13.7434901
                                            [lng] => 100.4890647
                                        )

                                    [location_type] => APPROXIMATE
                                    [viewport] => stdClass Object
                                        (
                                            [northeast] => stdClass Object
                                                (
                                                    [lat] => 13.7481218
                                                    [lng] => 100.4919267
                                                )

                                            [southwest] => stdClass Object
                                                (
                                                    [lat] => 13.7361885
                                                    [lng] => 100.4803822
                                                )

                                        )

                                )

                            [types] => Array
                                (
                                    [0] => sublocality
                                    [1] => political
                                )

                        )

                    [2] => stdClass Object
                        (
                            [address_components] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [long_name] => Bangkok Yai
                                            [short_name] => Bangkok Yai
                                            [types] => Array
                                                (
                                                    [0] => sublocality
                                                    [1] => political
                                                )

                                        )

                                    [1] => stdClass Object
                                        (
                                            [long_name] => Bangkok
                                            [short_name] => Bangkok
                                            [types] => Array
                                                (
                                                    [0] => locality
                                                    [1] => political
                                                )

                                        )

                                    [2] => stdClass Object
                                        (
                                            [long_name] => Thailand
                                            [short_name] => TH
                                            [types] => Array
                                                (
                                                    [0] => country
                                                    [1] => political
                                                )

                                        )

                                    [3] => stdClass Object
                                        (
                                            [long_name] => 10600
                                            [short_name] => 10600
                                            [types] => Array
                                                (
                                                    [0] => postal_code
                                                )

                                        )

                                )

                            [formatted_address] => Bangkok Yai, Bangkok 10600, Thailand
                            [geometry] => stdClass Object
                                (
                                    [bounds] => stdClass Object
                                        (
                                            [northeast] => stdClass Object
                                                (
                                                    [lat] => 13.7481218
                                                    [lng] => 100.4919267
                                                )

                                            [southwest] => stdClass Object
                                                (
                                                    [lat] => 13.722343
                                                    [lng] => 100.4615641
                                                )

                                        )

                                    [location] => stdClass Object
                                        (
                                            [lat] => 13.7341183
                                            [lng] => 100.4761897
                                        )

                                    [location_type] => APPROXIMATE
                                    [viewport] => stdClass Object
                                        (
                                            [northeast] => stdClass Object
                                                (
                                                    [lat] => 13.7481218
                                                    [lng] => 100.4919267
                                                )

                                            [southwest] => stdClass Object
                                                (
                                                    [lat] => 13.722343
                                                    [lng] => 100.4615641
                                                )

                                        )

                                )

                            [types] => Array
                                (
                                    [0] => sublocality
                                    [1] => political
                                )

                        )

                    [3] => stdClass Object
                        (
                            [address_components] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [long_name] => 10600
                                            [short_name] => 10600
                                            [types] => Array
                                                (
                                                    [0] => postal_code
                                                )

                                        )

                                    [1] => stdClass Object
                                        (
                                            [long_name] => Wat Tha Phra
                                            [short_name] => Wat Tha Phra
                                            [types] => Array
                                                (
                                                    [0] => sublocality
                                                    [1] => political
                                                )

                                        )

                                    [2] => stdClass Object
                                        (
                                            [long_name] => Bangkok Yai
                                            [short_name] => Bangkok Yai
                                            [types] => Array
                                                (
                                                    [0] => sublocality
                                                    [1] => political
                                                )

                                        )

                                    [3] => stdClass Object
                                        (
                                            [long_name] => Bangkok
                                            [short_name] => Bangkok
                                            [types] => Array
                                                (
                                                    [0] => locality
                                                    [1] => political
                                                )

                                        )

                                    [4] => stdClass Object
                                        (
                                            [long_name] => Thailand
                                            [short_name] => TH
                                            [types] => Array
                                                (
                                                    [0] => country
                                                    [1] => political
                                                )

                                        )

                                )

                            [formatted_address] => Wat Tha Phra, Bangkok Yai, Bangkok 10600, Thailand
                            [geometry] => stdClass Object
                                (
                                    [bounds] => stdClass Object
                                        (
                                            [northeast] => stdClass Object
                                                (
                                                    [lat] => 13.7481218
                                                    [lng] => 100.5127718
                                                )

                                            [southwest] => stdClass Object
                                                (
                                                    [lat] => 13.694656
                                                    [lng] => 100.4615641
                                                )

                                        )

                                    [location] => stdClass Object
                                        (
                                            [lat] => 13.7247046
                                            [lng] => 100.4958678
                                        )

                                    [location_type] => APPROXIMATE
                                    [viewport] => stdClass Object
                                        (
                                            [northeast] => stdClass Object
                                                (
                                                    [lat] => 13.7481218
                                                    [lng] => 100.5127718
                                                )

                                            [southwest] => stdClass Object
                                                (
                                                    [lat] => 13.694656
                                                    [lng] => 100.4615641
                                                )

                                        )

                                )

                            [types] => Array
                                (
                                    [0] => postal_code
                                )

                        )

                    [4] => stdClass Object
                        (
                            [address_components] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [long_name] => Bangkok
                                            [short_name] => Bangkok
                                            [types] => Array
                                                (
                                                    [0] => locality
                                                    [1] => political
                                                )

                                        )

                                    [1] => stdClass Object
                                        (
                                            [long_name] => Thailand
                                            [short_name] => TH
                                            [types] => Array
                                                (
                                                    [0] => country
                                                    [1] => political
                                                )

                                        )

                                )

                            [formatted_address] => Bangkok, Thailand
                            [geometry] => stdClass Object
                                (
                                    [bounds] => stdClass Object
                                        (
                                            [northeast] => stdClass Object
                                                (
                                                    [lat] => 13.9551109
                                                    [lng] => 100.9384077
                                                )

                                            [southwest] => stdClass Object
                                                (
                                                    [lat] => 13.4940968
                                                    [lng] => 100.3277368
                                                )

                                        )

                                    [location] => stdClass Object
                                        (
                                            [lat] => 13.7522222
                                            [lng] => 100.4938889
                                        )

                                    [location_type] => APPROXIMATE
                                    [viewport] => stdClass Object
                                        (
                                            [northeast] => stdClass Object
                                                (
                                                    [lat] => 13.9551109
                                                    [lng] => 100.9384077
                                                )

                                            [southwest] => stdClass Object
                                                (
                                                    [lat] => 13.4940968
                                                    [lng] => 100.3277368
                                                )

                                        )

                                )

                            [types] => Array
                                (
                                    [0] => locality
                                    [1] => political
                                )

                        )

                    [5] => stdClass Object
                        (
                            [address_components] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [long_name] => Bangkok
                                            [short_name] => Bangkok
                                            [types] => Array
                                                (
                                                    [0] => administrative_area_level_1
                                                    [1] => political
                                                )

                                        )

                                    [1] => stdClass Object
                                        (
                                            [long_name] => Thailand
                                            [short_name] => TH
                                            [types] => Array
                                                (
                                                    [0] => country
                                                    [1] => political
                                                )

                                        )

                                )

                            [formatted_address] => Bangkok, Thailand
                            [geometry] => stdClass Object
                                (
                                    [bounds] => stdClass Object
                                        (
                                            [northeast] => stdClass Object
                                                (
                                                    [lat] => 13.9551109
                                                    [lng] => 100.9384077
                                                )

                                            [southwest] => stdClass Object
                                                (
                                                    [lat] => 13.4940968
                                                    [lng] => 100.3277368
                                                )

                                        )

                                    [location] => stdClass Object
                                        (
                                            [lat] => 13.7234186
                                            [lng] => 100.4762319
                                        )

                                    [location_type] => APPROXIMATE
                                    [viewport] => stdClass Object
                                        (
                                            [northeast] => stdClass Object
                                                (
                                                    [lat] => 13.9551109
                                                    [lng] => 100.9384077
                                                )

                                            [southwest] => stdClass Object
                                                (
                                                    [lat] => 13.4940968
                                                    [lng] => 100.3277368
                                                )

                                        )

                                )

                            [types] => Array
                                (
                                    [0] => administrative_area_level_1
                                    [1] => political
                                )

                        )

                    [6] => stdClass Object
                        (
                            [address_components] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [long_name] => Thailand
                                            [short_name] => TH
                                            [types] => Array
                                                (
                                                    [0] => country
                                                    [1] => political
                                                )

                                        )

                                )

                            [formatted_address] => Thailand
                            [geometry] => stdClass Object
                                (
                                    [bounds] => stdClass Object
                                        (
                                            [northeast] => stdClass Object
                                                (
                                                    [lat] => 20.465143
                                                    [lng] => 105.636812
                                                )

                                            [southwest] => stdClass Object
                                                (
                                                    [lat] => 5.612851
                                                    [lng] => 97.343396
                                                )

                                        )

                                    [location] => stdClass Object
                                        (
                                            [lat] => 15.870032
                                            [lng] => 100.992541
                                        )

                                    [location_type] => APPROXIMATE
                                    [viewport] => stdClass Object
                                        (
                                            [northeast] => stdClass Object
                                                (
                                                    [lat] => 20.465143
                                                    [lng] => 105.636812
                                                )

                                            [southwest] => stdClass Object
                                                (
                                                    [lat] => 5.612851
                                                    [lng] => 97.343396
                                                )

                                        )

                                )

                            [types] => Array
                                (
                                    [0] => country
                                    [1] => political
                                )

                        )

                )

            [status] => OK
        )

)

I don't know how to grab the address_components at the top. I try with $data[0]->results[0]->address_components and etc. But it is not working. Please check this once... Thank you.

  • 写回答

1条回答 默认 最新

  • dsafq2131321 2013-01-31 16:15
    关注

    The following works for me:

    $data->results[0]->address_components[0]->long_name
    

    You might also want to enable json_decode's assoc-parameter so that objects get converted to associative arrays.
    E.g.

    $data = json_decode(file_get_contents($url), true);
    $data["results"][0]["address_components"][0]["long_name"]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?