Как получить доступ к массиву JSON - PullRequest
1 голос
/ 06 июля 2019

Я получаю ответ от Google в формате Json.когда я декодирую и распечатываю вывод, он работает отлично.Вот так

print_r($output);

Но когда я пытаюсь получить доступ к одному параметру массива, он не работает.

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

Это выдает эту ошибку.

«сообщение»: «Неопределенное смещение: 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
   )

1 Ответ

0 голосов
/ 06 июля 2019

Похоже, $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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...