Я использую 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, я уже ищу в Интернете, но я не понимаю, как это решить, пожалуйста, помогите мне
Я уже упоминал, что приведенный выше код работает нормально, но иногда я получаю сообщение об ошибке Undefined Offset: 0 в строке $ lat и $ lng, мне просто нужен другой способ получить данные из этого JSON
и я уже упоминал, если этот индекс является удачным или неудачным, то вам, вероятно, следует сначала проверить нулевой индекс, либо через array_key_exists, либо, возможно, через empty. просто тернарный оператор должен быть достаточным






Вы можете написать такой код:
$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']);да .. @JamesLalor Спасибо !! Это было просто из-за копирования и вставки :)
$url='your url';
$array = file_get_contents($url);
$array = (array)json_decode($array);
Попробуйте добавить к ответу еще какое-нибудь описание или пояснение. Что делать в коде? Что следует изменить автору? Как это решит проблему?
Вы также можете написать код вроде.
$mapcontent = json_decode($content,true);
if ( true != empty($mapcontent['results'])) {
$lat = $mapcontent['results'][0]['geometry']['location']['lat'];
$lng = $mapcontent['results'][0]['geometry']['location']['lng'];
}
тогда просто сначала проверьте индекс