2015-10-28 39 views
0

如何訪問數組$ value [$ i]的內容。使用下面的表單中的foreach沒有運氣。對數組進行迭代並顯示結果

想法是遍歷$ contentArray並在每次迭代中顯示每個子數組中的一個項目。

$addsContent = $Adds->selectAdds(10); 
$sharedArticlesContent = $SharedContent->getSharedContent($topic_selected, $filter_selected); 
$blogPostsContent = $BlogPosts->getRecentBlogPostsByTopic("business"); 

$contentArray = array(

    $sharedArticlesContent, 
    $addsContent , 
    $blogPostsContent 
); 


foreach($contentArray as $value) 
    { 
     if(count($value)>$maxLength) 
     { 
      $maxLength = count($value); 
     } 
    } 

for($i=0; $i<$maxLength; $i++) 
{ 
    foreach($contentArray as $value) 
    { 
     if(isset($value[$i])) 
     { 
      if($value==$sharedArticlesContent){ 
       $data = $value[$i]; 
       foreach($sharedArticlesContent as $data){ 

        $post_id = $data['id']; 
        $uploaded_by = $data['uploaded_by']; 
        $text = $data['text']; 
        $image = $data['image']; 

        require 'template1.php'; 

       } 
      }elseif($value==$addsContent){ 
       //template2 
      }else{ 
       //template3 
      } 

     } 

    } 
} 

回答

0

你這裏處理關聯數組,你可以像訪問:

<?php 

$addsContent = $Adds->selectAdds(10); 
$sharedArticlesContent = $SharedContent->getSharedContent($topic_selected, $filter_selected); 
$blogPostsContent = $BlogPosts->getRecentBlogPostsByTopic("business"); 

$contentArray = array(

$sharedArticlesContent, 
$addsContent , 
$blogPostsContent 
); 


foreach($contentArray as $value) 
{ 
    if(count($value)>$maxLength) 
    { 
     $maxLength = count($value); 
    } 
} 

for($i=0; $i<$maxLength; $i++) 
{ 
foreach($contentArray as $value) 
{ 
    if(isset($value[$i])) 
    { 
     if($value==$sharedArticlesContent) 
     { 
      $post_id = $value[$i]['id']; 
      $uploaded_by = $value[$i]['uploaded_by']; 
      $text = $value[$i]['text']; 
      $image = $value[$i]['image']; 

      require 'template1.php'; 
     } 
     elseif($value==$addsContent) 
     { 
      //template2 
     } 
     else 
     { 
      //template3 
     } 

    } 

} 
} 
+0

我早些時候嘗試過,但是使用了$ data = $ value [$ i];它在3個元素之後永遠循環。可能是這與子陣列長度不等有關? – user3857924

+0

Nop,它不應該永久循環,它會在元素加載後停止。你想加載正確的一切? –

0

你不需要foreach$data是一個關聯數組,你不需要循環它。

 if($value==$sharedArticlesContent){ 
      $data = $value[$i]; 
      $post_id = $data['id']; 
      $uploaded_by = $data['uploaded_by']; 
      $text = $data['text']; 
      $image = $data['image']; 

      require 'template1.php'; 
      } 
+0

試過了。它啓動良好,然後循環相同的$ sharedArticlesContent項目永遠....... – user3857924

+0

我不太瞭解你的數據結構。你能否更新問題以顯示'$ contentArray'和'SharedArticlesContent'中的內容? – Barmar

+0

還有你試圖從中獲得的輸出。我不明白「從每個子數組中顯示一個項目」是什麼意思,因爲你有從'0'到'$ maxLength'的循環。 – Barmar