PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php-Google地理编码.解析JSON问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我想从他们的邮政编码(加拿大/美国)的Google地理编码中获取用户所在的城市,州/省,国家/地区.我将数据检索为JSONhttps://developers.google.com/maps/documentation/geocoding/#JSON

问题在于,“ address_components”的数量/顺序并不总是相同的.我使用的是:$geocodedinfo [‘results’] [0] [‘address_components’] [3] [‘short_name’];
但我很快意识到,这并不总是省/州,因为有时Google会在“ address_components”下添加一个额外的元素.

有没有一种方法可以仅针对我需要的具体信息(例如:城市,州/省,国家/地区)来解析结果?

编辑我实际上在得到JSON时解码JSON json_decode($result,truE)

Array
(
[results] => Array
    (
        [0] => Array
            (
                [address_components] => Array
                    (
                        [0] => Array
                            (
                                [long_name] => V2X 2P6
                                [short_name] => V2X 2P6
                                [types] => Array
                                    (
                                        [0] => postal_code
                                    )

                            )

                        [1] => Array
                            (
                                [long_name] => Maple Ridge
                                [short_name] => Maple Ridge
                                [types] => Array
                                    (
                                        [0] => locality
                                        [1] => political
                                    )

                            )

                        [2] => Array
                            (
                                [long_name] => Maple Ridge
                                [short_name] => Maple Ridge
                                [types] => Array
                                    (
                                        [0] => administrative_area_level_3
                                        [1] => political
                                    )

                            )

                        [3] => Array
                            (
                                [long_name] => Greater Vancouver Regional DiStrict
                                [short_name] => Greater Vancouver Regional DiStrict
                                [types] => Array
                                    (
                                        [0] => administrative_area_level_2
                                        [1] => political
                                    )

                            )

                        [4] => Array
                            (
                                [long_name] => British columbia
                                [short_name] => BC
                                [types] => Array
                                    (
                                        [0] => administrative_area_level_1
                                        [1] => political
                                    )

                            )

                        [5] => Array
                            (
                                [long_name] => Canada
                                [short_name] => CA
                                [types] => Array
                                    (
                                        [0] => country
                                        [1] => political
                                    )

                            )

                    )

                [formatted_address] => Maple Ridge, BC V2X 2P6, Canada
                [geometry] => Array
                    (
                        [bounds] => Array
                            (
                                [northeast] => Array
                                    (
                                        [lat] => 49.2214351
                                        [lng] => -122.6577849
                                    )

                                [southWest] => Array
                                    (
                                        [lat] => 49.219268
                                        [lng] => -122.663613
                                    )

                            )

                        [LOCATIOn] => Array
                            (
                                [lat] => 49.2202679
                                [lng] => -122.660587
                            )

                        [LOCATIOn_type] => APPROXIMATE
                        [viewport] => Array
                            (
                                [northeast] => Array
                                    (
                                        [lat] => 49.2217005303
                                        [lng] => -122.6577849
                                    )

                                [southWest] => Array
                                    (
                                        [lat] => 49.2190025697
                                        [lng] => -122.663613
                                    )

                            )

                    )

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

            )

    )

[status] => OK
)

解决方法:

您将不得不遍历结果.
大多数相关的PHP函数不支持多维数组,而确实支持多维数组.

您可能想要这样的东西:

foreach ($geocodedinfo["results"] as $result) {
    foreach ($result["address_components"] as $address) {
        // Repeat the following for each desired type
        if (in_array("country", $address["types"])) {
            $country = $address["long_name"];
        }
    }
}

大佬总结

以上是大佬教程为你收集整理的php-Google地理编码.解析JSON问题全部内容,希望文章能够帮你解决php-Google地理编码.解析JSON问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: