【问题标题】:How to access json array如何访问json数组
【发布时间】:2019-11-16 19:09:32
【问题描述】:

我收到了 Json 格式的谷歌回复。当我解码并打印输出时,它工作得很好。像这样

print_r($output);

但是当我尝试访问数组的单个参数时,它不起作用。

print_r($output->results[0]->geometry->location->lat); 

它给出了这个错误。

"message": "未定义的偏移量:0", 代码:

       public function mapdata(Request $request){
        $address = $request->name;
        $formattedAddress = str_replace(' ','+',$address);
        $response = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?address='.$formattedAddress.'&sensor=true_or_false&key=APIKEY); 
        $output = json_decode($response);
        //print_r($output);
        print_r($output->results[0]->geometry->location->lat);
      }

输出:

  stdClass Object
  (
 [results] => Array
    (
        [0] => stdClass Object
            (
                [address_components] => Array
                    (
                        [0] => stdClass Object
                            (
                                [long_name] => Melbourne
                                [short_name] => Melbourne
                                [types] => Array
                                    (
                                        [0] => colloquial_area
                                        [1] => locality
                                        [2] => political
                                    )

                            )

                        [1] => stdClass Object
                            (
                                [long_name] => Victoria
                                [short_name] => VIC
                                [types] => Array
                                    (
                                        [0] => administrative_area_level_1
                                        [1] => political
                                    )

                            )

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

                            )

                    )

                [formatted_address] => Melbourne VIC, Australia
                [geometry] => stdClass Object
                    (
                        [bounds] => stdClass Object
                            (
                                [northeast] => stdClass Object
                                    (
                                        [lat] => -37.5112737
                                        [lng] => 145.5125288
                                    )

                                [southwest] => stdClass Object
                                    (
                                        [lat] => -38.4338593
                                        [lng] => 144.5937418
                                    )

                            )

                        [location] => stdClass Object
                            (
                                [lat] => -37.8136276
                                [lng] => 144.9630576
                            )

                        [location_type] => APPROXIMATE
                        [viewport] => stdClass Object
                            (
                                [northeast] => stdClass Object
                                    (
                                        [lat] => -37.5112737
                                        [lng] => 145.5125288
                                    )

                                [southwest] => stdClass Object
                                    (
                                        [lat] => -38.4338593
                                        [lng] => 144.5937418
                                    )

                            )

                    )

                [place_id] => ChIJ90260rVG1moRkM2MIXVWBAQ
                [types] => Array
                    (
                        [0] => colloquial_area
                        [1] => locality
                        [2] => political
                    )

            )

     )

   [status] => OK
   )

【问题讨论】:

  • 向我们展示print_r($output);的结果
  • 我已经添加了 print_r($output); 的结果@HTMHell
  • 一步一步尝试。 print_r($output->results) 看看你得到了什么。

标签: php arrays json google-maps laravel-5


【解决方案1】:

看起来$output->results[0] 并不总是设置。您想在尝试访问它之前确保它已设置:

if (isset($output->results[0])) {
    print_r($output->results[0]->geometry->location->lat);
} else {
    // what happens if $output->results[0] is not set
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 2015-06-26
    • 2017-12-05
    相关资源
    最近更新 更多