2013-05-14 21 views
0

好嵌套的数组,这样的标题可能有点误导,但我不太清楚我所描述的,所以这里去。循环执行下面的键

我有以下的JSON:

{ 
    "lastModified": 1368517749000, 
    "name": "Requiem Paradisum", 
    "realm": "Chamber of Aspects", 
    "battlegroup": "Misery", 
    "level": 25, 
    "side": 1, 
    "achievementPoints": 1710, 
    "emblem": { 
    "icon": 126, 
    "iconColor": "ffdfa55a", 
    "border": 3, 
    "borderColor": "ff0f1415", 
    "backgroundColor": "ff232323" 
    }, 
    "news": [ 
    { 
     "type": "itemPurchase", 
     "character": "Osmoses", 
     "timestamp": 1368482100000, 
     "itemId": 91781 
    }, 
    { 
     "type": "itemLoot", 
     "character": "Greenmean", 
     "timestamp": 1368477900000, 
     "itemId": 87209 
    }, 
    { 
     "type": "itemLoot", 
     "character": "Greenmean", 
     "timestamp": 1368475800000, 
     "itemId": 86880 
    }, 
    { 
     "type": "itemPurchase", 
     "character": "Osmoses", 
     "timestamp": 1368475380000, 
     "itemId": 91781 
    }, 
    { 
     "type": "itemPurchase", 
     "character": "Osmoses", 
     "timestamp": 1368475380000, 
     "itemId": 91779 
    }, 
    { 
     "type": "itemPurchase", 
     "character": "Osmoses", 
     "timestamp": 1368475320000, 
     "itemId": 91779 
    }, 
    { 
     "type": "playerAchievement", 
     "character": "Osmoses", 
     "timestamp": 1368470700000, 
     "achievement": { 
     "id": 6193, 
     "title": "Level 90", 
     "points": 10, 
     "description": "Reach level 90.", 
     "rewardItems": [ 
      { 
      "id": 87764, 
      "name": "Serpent's Heart Firework", 
      "icon": "inv_misc_missilelarge_green", 
      "quality": 1, 
      "itemLevel": 1, 
      "tooltipParams": { 

      }, 
      "stats": [ 

      ], 
      "armor": 0 
      } 
     ], 
     "icon": "achievement_level_90", 
     "criteria": [ 

     ], 
     "accountWide": false, 
     "factionId": 2 
     } 
    }, 

基本上我需要循环一切都在“新闻”和输出。 我想不出什么如何正确分析: 答:不指定琴键号和 B:当它到达一个关键是将包含那些键我在亏损下的其他密钥,并进一步阵列。 (例如“玩家成就”键) 我明白我可能是有点新手在这里和可能很可能是第1页的“PHP傻瓜”上,但我发誓,我是一派死!

+0

这是完整的JSON? – alwaysLearn 2013-05-14 10:52:34

+0

从第一个6键左右的开始,它会继续进行另外70个参赛作品,这些参赛作品是我引用的参赛作品的混合作品。 – 2013-05-14 10:56:45

回答

1

看看这种方法是否合适。确保你的JSON数组格式正确。

$test = the_json_array;  
$array = json_decode($test,true); 
    function recursive($array) { 
     foreach($array as $key => $value) { 
      if (!is_array($value)) echo $key.":".$value."<br/>"; 
      else recursive($value); 
     } 
     } 
recursive($array); 
0

哟需要做json_decode('your-jason', True)将您的JSON字符串转换成数组。

Json_decode for more understanding

如果不指定TRUEjason_decode函数,那么它将返回PHP对象

希望回答的问题。至于

+0

这是我到目前为止: $ json = file_get_contents('http://eu.battle.net/api/wow/guild/chamber-of-aspects/requiem%20paradisum?fields=news'); $ json = json_decode($ json); $ news = $ json-> news; – 2013-05-14 10:58:48

+0

你可以'print_r'看看你是如何得到输出的,但是看起来是正确的你在做什么, – user2362083 2013-05-14 11:00:57

1

查阅json_decode

不要忘了给第二个参数作为TRUE否则将返回对象

和尝试这样的事情

$json   = 'your json' 
$json_array = json_decode($json,true); 

$news   = $json_array['news']; 

foreach($news as $value) 
{ 

    print_r($value); 

} 

我觉得你的目的,你应该看看array_walk_recursive

function printResult($item, $key) 
    { 
    echo "$key holds $item\n"; 
    } 
    array_walk_recursive($news, 'printResult'); 
+0

http://www.requiemparadisum.com/news.html 那就是输出结果。 – 2013-05-14 11:10:26

+0

你有没有array_walk_recursive我认为它应该可以帮助你..看来,当前的结果是来自for循环? – alwaysLearn 2013-05-14 11:15:48

+0

呃。 。 。 。不太确定放在哪里,代码看起来像现在的第一个片段。 – 2013-05-14 11:19:18