2012-06-28 92 views
4

我一直在第一次使用json和php第一次在很長一段時間,我已經打了兩面牆。PHP foreach迭代json數據

我已經創建了一個JavaScript文件,並使用PHP成功解碼了它,現在可以訪問數據(一次一個項目),但是在嘗試迭代它時碰到了一個障礙,使用所有數據吐出列表項目。

任何幫助,這將不勝感激。

的josn看起來是這樣的:

{ 
    "data": [ 
     { 
      "name": "name1", 
      "alt": "name one", 
      "imgUrl": "img/icons/face1.png", 
      "linkUrl": "linkurl" 
     }, 
     { 
      "name": "name2", 
      "alt": "name two", 
      "imgUrl": "img/icons/face2.png", 
      "linkUrl": "linkurl" 
     } 
    ] 
} 

和PHP:

<?php 
$json_url = "js/tiles/jsonfeed.js"; 
$json = file_get_contents($json_url); 
$links = json_decode($json, TRUE); 
?> 
<ul> 
    <li> 
    <a href="<?php echo $links['data'][1]['linkUrl'] ?>"><img scr="<?php echo $links['data'][1]['imgUrl']; ?>" alt="<?php echo $links['data'][1]['alt']; ?>" class="share-icon" /></a> 
    </li> 
</ul> 

現在很明顯,這樣只會搶在第二陣列插槽的信息,我知道,有一個更有效的方式來編寫列表項,而不用跳入和跳出php,這將很快被清除。

我遇到的問題是試圖將其包裝在foreach循環中,以便爲json提要中的每個項目吐出一個列表項目。作爲json的新手,並且在一段時間內沒有碰到php,我很難正確地格式化循環並獲取適當的數據。

有人能幫我讓這個工作正常嗎?

感謝

回答

3

這應該做的工作:

<?php 
$json_url = "js/tiles/jsonfeed.js"; 
$json = file_get_contents($json_url); 
$links = json_decode($json, TRUE); 
?> 
<ul> 
<?php 
    foreach($links['data'] as $key=>$val){ 
?> 
    <li> 
    <a href="<?php echo $val['linkUrl'] ?>"> 
     <img scr="<?php echo $val['imgUrl']; ?>" alt="<?php echo $val['alt']; ?>" class="share-icon" /> 
    </a> 
    </li> 
<?php 
    } 
?> 
</ul> 
+1

神奇,效果很好。謝謝你的幫助! – nate63

+0

你爲什麼要把這個變成一個關鍵的val對? – Wobbles

6

只需將需要的foreach的數據,然後與每個孩子輪流工作:

foreach ($links['data'] AS $d){ 
    echo $d['linkUrl']; 
} 
0

你的foreach循環應該遍歷$links['data']像這樣的例子:

foreach($links['data'] as $item) { 
    echo $item['linkUrl']; 
}