2013-05-14 46 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