2012-02-14 36 views
1

因此,我正在製作一個插件來將facebook數據輸出到wordpress網站,我這樣做的方式是通過json格式的圖表api檢索facebook數據,然後在php中解碼該json數據得到一個數組,這是當我做JSON的變量轉儲解碼的數據時,返回的全排列:當通過數組循環時意外的輸出

array 
'data' => 

array 
    0 => 
    array 
     'name' => string '' (length=21) 
     'start_time' => string '' (length=19) 
     'end_time' => string '' (length=19) 
     'location' => string '' (length=11) 
     'id' => string '' (length=15) 
     'rsvp_status' => string '' (length=9) 
    1 => 
    array 
     'name' => string '' (length=27) 
     'start_time' => string '' (length=19) 
     'end_time' => string '' (length=19) 
     'id' => string '' (length=15) 
     'rsvp_status' => string '' (length=9) 
    2 => 
    array 
     'name' => string '' (length=35) 
     'start_time' => string '' (length=19) 
     'end_time' => string '' (length=19) 
     'location' => string '' (length=13) 
     'id' => string '' (length=15) 
     'rsvp_status' => string '' (length=9) 
'paging' => 
array 
    'previous' => string '' (length=224) 
    'next' => string '' (length=211) 

現在,因爲這是一個多維數組我使用多個foreach循環來獲得數據,如下圖所示:

foreach ($data as $data) { 
    foreach ($data as $data) { ?> 

    <div class="eventSegment"> 
     <h3><?php echo $data['name']; ?></h3> 
     <p><?php echo strstr($data['start_time'], T, true); ?></p> 
     <a href="http://www.facebook.com/<?php echo $data['id']; ?>"> 
      <img src="<?php echo $plugin_dir; ?>/images/rsvpfb.png" alt="RSVP on Facebook" class="RSVPfacebook" /> 
     </a>  
    </div> 

    <?php 
    } 
} 

endif; } ?> 

凌亂我知道;)但我總是最後整理我的代碼,無論如何,結果是完全正常的,除了兩塊數據不應該在那裏,$ data ['name']變量對應於它們兩個中的'h',那裏根本沒有約會,而且他們的身份證也只是'h',我被這個難住了,不知道從哪裏開始尋找解決方案。

回答

2

你只需要一個的foreach:

假設$數據[ '數據']作爲開始:

foreach ($data['data'] as $array_index => $this_data) { 
    echo $this_data['name'].'<br />'; 
} 
+0

太感謝你了,你能解釋爲什麼2個額外的要素是出現?它會幫助很多:) – 2012-02-14 16:04:17

+0

隨着你的企圖,你在數組中循環了兩次我猜,因爲你在第一個foreach中有$ data,這在你的第二個foreach中是一樣的。正如@TV製作人所說的那樣,不要在foreach中再次使用相同的變量名稱,因爲您會用自己覆蓋它。 – djot 2012-02-14 16:20:01

0

您不能使用相同的變量。使用類似

foreach($data as $key=>$value) { 
//..etc 
}