2016-03-14 100 views
-2

我有一個需要修改的foreach循環,以便在計數10後關閉它正在循環的html結構並打開一個新結構以添加10更多的計數等等,直到數組中沒有更多的元素。如何在foreach循環中構建HTML以包含輸出

<?php 
// open the ul 
$location_lists .= '<ul'; 

// get the array 
$locations = get_posts(array(
'post_type' => 'location', 
'showposts' => -1 
)); 

foreach ($locations as $location) { 
    $address = some code here;  
    $location_lists .= '<li>'; 
    $location_lists .= '<span>'. ($address) .'</span>'; 
    $location_lists .= '</li>'; 
}; 

// after 10 loops close the ul 
$location_lists .= '</ul>'; 

// open a new ul to hold 10 more li's etc... 
$location_lists .= '<ul'; 
?> 

所以,如果有該陣列中24個元素,我需要2微升的含有10裏的每一個和所述第三UL將包含4剩餘的裏的。

回答

1
$location_lists .= '<ul>'; 
$i=0; 
foreach ($locations as $location) { 
    $i++; 
    $address = some code here;  
    $location_lists .= '<li>'; 
    $location_lists .= '<span>'. ($address) .'</span>'; 
    $location_lists .= '</li>'; 

    if (($i % 10) == 0) { 
     $location_lists .= '</ul><ul>'; 
    } 
}; 
$location_lists .= '</ul>'; 
+1

該代碼完成了我在我的問題中所要求的。它非常乾淨簡潔。 – Fettabachi

+0

剛發現一個問題。如果數組中有十個元素,該腳本將創建一個額外的空ul。 – Fettabachi

+0

This works - if(($ i%10)== 1 && $ i> 10){DeveloperH – Fettabachi

1
$location_lists=''; 
$locations = get_posts(array(
'post_type' => 'location', 
'showposts' => -1 
)); 
$i=0; 
foreach ($locations as $location) { 
    if($i==0){$location_lists .= '<ul>';} 
    $address = some code here;  
    $location_lists .= '<li>'; 
    $location_lists .= '<span>'. ($address) .'</span>'; 
    $location_lists .= '</li>'; 
    $i++; 
if($i==10){$location_lists .= '</ul>';$i=0} 
}; 
if($i!=0){$location_lists .= '</ul>';} 
+0

缺貨的6類92個可用的元素,這個代碼僅輸出陣列中的19個元件的最後一個類別。一個UL包含10個元素,第二個包含9個。 – Fettabachi