Как получить конкретное значение поля JSON в Codeigniter Php?

Я использую Google Map Api и получаю результат в форме JSON, а результат вывода

    {
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Plot No 1",
               "short_name" : "Plot No 1",
               "types" : [ "premise" ]
            },
            {
               "long_name" : "B Block Road",
               "short_name" : "B Block Rd",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Rangpuri Extention B-Block Pocket-4",
               "short_name" : "Rangpuri Extention B-Block Pocket-4",
               "types" : [ "political", "sublocality", "sublocality_level_1" ]
            },
            {
               "long_name" : "New Delhi",
               "short_name" : "New Delhi",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "South West Delhi",
               "short_name" : "South West Delhi",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Delhi",
               "short_name" : "DL",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "India",
               "short_name" : "IN",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "110037",
               "short_name" : "110037",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "Plot No 1, B Block Rd, Rangpuri Extention B-Block Pocket-4, New Delhi, Delhi 110037, India",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 28.5379687,
                  "lng" : 77.121816
               },
               "southwest" : {
                  "lat" : 28.5377897,
                  "lng" : 77.1217006
               }
            },
            "location" : {
               "lat" : 28.5378435,
               "lng" : 77.1217523
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 28.5392281802915,
                  "lng" : 77.12310728029151
               },
               "southwest" : {
                  "lat" : 28.5365302197085,
                  "lng" : 77.12040931970849
               }
            }
         },
         "partial_match" : true,
         "place_id" : "ChIJibjV7RYcDTkRnaFq2Lg__b4",
         "types" : [ "premise" ]
      }
   ],
   "status" : "OK"
}

и я хочу извлечь lat и lng под объектом местоположения, напишите сейчас, я использую этот код

$mapcontent = json_decode($content,true);
 $lat = $mapcontent['results'][0]['geometry']['location']['lat'];
 $lng = $mapcontent['results'][0]['geometry']['location']['lng'];

где $ content - это результат вывода, упомянутый выше, с использованием приведенного выше кода, и он работает, но иногда я получаю сообщение об ошибке undefined offest: 0 в строках $ lat и $ lng, есть ли другой способ получить определенные данные из код JSON, я уже ищу в Интернете, но я не понимаю, как это решить, пожалуйста, помогите мне

тогда просто сначала проверьте индекс

Kevin 17.05.2018 10:06

Я уже упоминал, что приведенный выше код работает нормально, но иногда я получаю сообщение об ошибке Undefined Offset: 0 в строке $ lat и $ lng, мне просто нужен другой способ получить данные из этого JSON

utkarsh tiwari 17.05.2018 10:08

и я уже упоминал, если этот индекс является удачным или неудачным, то вам, вероятно, следует сначала проверить нулевой индекс, либо через array_key_exists, либо, возможно, через empty. просто тернарный оператор должен быть достаточным

Kevin 17.05.2018 10:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
3
162
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете написать такой код:

$mapcontent = json_decode($content,true);
$resultCount = count($mapcontent['results']);
if ( $resultCount > 0 ) {
    $lat = $mapcontent['results'][0]['geometry']['location']['lat'];
    $lng = $mapcontent['results'][0]['geometry']['location']['lng'];
}

Это будет работать.

count($mapcontent['results'][0]); все еще проверяет [0] и вернет undefined, если не найден. должен быть count($mapcontent['results']);
James Lalor 17.05.2018 10:13

да .. @JamesLalor Спасибо !! Это было просто из-за копирования и вставки :)

Sambhaji Katrajkar 17.05.2018 10:14
$url='your url';            
$array = file_get_contents($url);
$array = (array)json_decode($array);

Попробуйте добавить к ответу еще какое-нибудь описание или пояснение. Что делать в коде? Что следует изменить автору? Как это решит проблему?

Tatranskymedved 17.05.2018 12:02

Вы также можете написать код вроде.

$mapcontent = json_decode($content,true);
if ( true != empty($mapcontent['results'])) {
    $lat = $mapcontent['results'][0]['geometry']['location']['lat'];
    $lng = $mapcontent['results'][0]['geometry']['location']['lng'];
}

Другие вопросы по теме