我有一个由JSON格式的URL返回的复杂结构,我得到了我可以通过var_dump查看的响应,现在我有这个响应,
{
"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": [
{
"name": "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
},
我使用了json_decode($ response,true)来获取一个解析变量,现在我不知道如何循环它。有什么想法吗?!
编辑1:斑点是一个数组[],其索引为0.我想循环遍历斑点数组中的每个名称值对
答案 0 :(得分:3)
<?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 );
}
这应该为您提供spot数组内的所有信息。
编辑:现在使用实际检查的语法,它可以正常工作。
答案 1 :(得分:2)
$result = json_decode($response,true);
foreach($result['spots'] as $spot)
{
echo $spot['address']['locality'];
}
答案 2 :(得分:2)
或试试这个:
$result = json_decode($response,true); $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($result)); foreach($iterator as $key=>$value) { echo "<b>".$key."</b><br />".$value."<br />"; }
这将转换一个简单数组中的复杂关联数组以进行循环。
希望这会有所帮助。
答案 3 :(得分:0)