Loop through parsed json string in php
I have a complicated structure of returned by an URL in JSON format, i have got the reponse which I can view through var_dump, Now I have this reponse,
{
"groups": [],
"total_pages": 1,
"spots": [
{
"address": {
"region": "TX",
"locality": "Austin"
},
"name": "Dirty Bill's",
"checkins_count": 646,
"_image_url_200": "http://static.gowalla.com/categories/28-b0d41920d32839ce1ecd6641e5fc2c87-200.png",
"image_url": "http://static.gowalla.com/categories/28-78c9b4d7d239784df49dc932f64a3519-100.png",
"_image_url_50": "http://static.gowalla.com/categories/28-78c9b4d7d239784df49dc932f64a3519-100.png",
"radius_meters": 50,
"trending_level": 0,
"users_count": 375,
"url": "/spots/43711",
"checkins_url": "/checkins?spot_id=43711",
"lng": "-97.7495040214",
"spot_categories": [
{
"name": "Dive Bar",
"url": "/categories/28"
}
],
"foursquare_id": null,
"highlights_url": "/spots/43711/highlights",
"items_url": "/spots/43711/items",
"items_count": 11,
"strict_radius": false,
"description": "AKA the Gnome Bar. Much Warmer than Key Bar.",
"activity_url": "/spots/43711/events",
"lat": "30.2696322356",
"photos_count": 23
},
{
"address": {
"region": "TX",
"locality": "Austin"
},
"name": "Austin Wellness Clinic",
"checkins_count": 1,
"_image_url_200": "http://static.gowalla.com/categories/118-b41c2ba96f1ffe99fc23f12f0ee3b960-200.png",
"image_url": "http://static.gowalla.com/categories/118-5f9e72162abf3dcbc0108cdbdba6a29f-100.png",
"_image_url_50": "http://static.gowalla.com/categories/118-5f9e72162abf3dcbc0108cdbdba6a29f-100.png",
"radius_meters": 75,
"trending_level": 0,
"users_count": 1,
"url": "/spots/7360448",
"checkins_url": "/checkins?spot_id=7360448",
"lng": "-97.7495133877",
"spot_categories": [
{
"na开发者_运维技巧me": "Health & Fitness",
"url": "/categories/118"
}
],
"foursquare_id": null,
"highlights_url": "/spots/7360448/highlights",
"items_url": "/spots/7360448/items",
"items_count": 0,
"strict_radius": false,
"description": null,
"activity_url": "/spots/7360448/events",
"lat": "30.2695755256",
"photos_count": 0
},
I have used json_decode($response,true) to get a parse variable, now I am not sure as to how to loop through it. Any ideas?!
edit 1: The spots is an array[] which has an index 0. I want to loop though each name valu pair inside the spots array
<?php
$json = json_encode(
array(
'spots' => array(
'bar' => 'baz',
array(
'quz' => 'foo',
'bar' => 'baz'
)
)
)
);
$root = json_decode( $json, true );
function read( $array ) {
foreach( (array) $array as $key => $value ) {
if( is_array( $value ) ) {
read( $array );
}
echo "$key = $value\n";
}
}
foreach( $root['spots'] as $spot ) {
read( $spot );
}
This should give you all the information inside the spot array.
EDIT: Now with actually checked syntax, it works.
$result = json_decode($response,true);
foreach($result['spots'] as $spot)
{
echo $spot['address']['locality'];
}
Or try this one:
$result = json_decode($response,true); $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($result)); foreach($iterator as $key=>$value) { echo "<b>".$key."</b><br />".$value."<br />"; }
This will convert a complex associative array in a simple array for looping.
Hope this helps.
You wouldn't loop through that, you'd use recursion to get through it. You need to write a function that can call itself, passing different branches of that structure to itself as the arguments. This might help you with PHP recursion.
精彩评论