简体   繁体   中英

How to access json file element

So I am retrieving a json file from an API, and I want to grab the data from object 'place_id'.

I have been looking online and I have seen how to grab elements from json files, however I can't understand what I am doing wrong, as my code gives me an error:

Warning: Undefined array key "place_id" in C:\xampp\htdocs\cw\tester.php on line 15 

This is my php code where I try to grab the data from 'place_id':

$place_json = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?address=belfast+zoo&key=' . $place_id_key);
    
$json = json_decode($place_json, true);
    
echo $json['results']['place_id'];

this is my json file:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Antrim Road",
               "short_name" : "Antrim Rd",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Belfast",
               "short_name" : "Belfast",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Newtownabbey",
               "short_name" : "Newtownabbey",
               "types" : [ "postal_town" ]
            },
            {
               "long_name" : "Belfast",
               "short_name" : "Belfast",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Northern Ireland",
               "short_name" : "Northern Ireland",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United Kingdom",
               "short_name" : "GB",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "BT36 7PN",
               "short_name" : "BT36 7PN",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "Antrim Rd, Belfast, Newtownabbey BT36 7PN, UK",
         "geometry" : {
            "location" : {
               "lat" : 54.6577821,
               "lng" : -5.943665699999999
            },
            "location_type" : "GEOMETRIC_CENTER",
            "viewport" : {
               "northeast" : {
                  "lat" : 54.65913108029149,
                  "lng" : -5.942316719708497
               },
               "southwest" : {
                  "lat" : 54.6564331197085,
                  "lng" : -5.945014680291502
               }
            }
         },
         "place_id" : "ChIJ88iCe5inYUgRdeXmfCtuvu4",
         "plus_code" : {
            "compound_code" : "M354+4G Belfast, UK",
            "global_code" : "9C6PM354+4G"
         },
         "types" : [ "establishment", "point_of_interest", "tourist_attraction", "zoo" ]
      }
   ],
   "status" : "OK"
}

Apologies as I know it is obvious, but I can't seem to understand why! thanks!

This should do the trick? Notice the [0] that was added. Since results is actually an array.

<?php

$place_json = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?address=belfast+zoo&key=' . $place_id_key);
    
$json = json_decode($place_json, true);
    
echo $json['results'][0]['place_id'];

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM