2013-03-07 31 views
2

目前,我從MySQL中獲取數據如下:PHP迭代UL分割

$catmapper = new Application_Model_Mapper_BusinessCategoryMapper(); 
$result = $catmapper->getBusinessCategory(); 

我遍歷結果從上面使用for循環到<li>標籤如下:

$mcat = "<ul>"; 
for($i=0; $i<count($result); $i++){ 
    $mcat = $mcat . "<li class='refinecategory'><a id='refine_category_0_0' class='browse-category' href='/business/searchreviews?mct=active' rel='active'>".$result[$i]['cat_name']."</a></li>"; 
} 
$mcat = $mcat . "</ul>"; 

但是,這將產生ul標籤中的巨大列表。我怎樣才能將上述聲明分解爲多個ul標籤?在每個ul我只需要5 li標籤,如果多於另一個ul將生成並將其添加到其中li

+0

if((i i%5)== 0){add a ul – Babblo 2013-03-07 04:31:51

回答

3

我會「聽」爲當$i是5,像這樣整除:

$mcat = "<ul>"; 
for($i=0; $i<count($result); $i++){ 
    if ($i % 5 == 0 && $i > 0) { 
     $mcat .= "</ul><ul>"; 
    } 
    $mcat .= "<li class='refinecategory'><a id='refine_category_0_0' class='browse-category' href='/business/searchreviews?mct=active' rel='active'>".$result[$i]['cat_name']."</a></li>"; 
} 
if ($i % 5 != 0) { 
    $mcat .= "</ul>"; 
} 

這應該引起你的列表每5項分裂。我沒有對它進行測試,所以如果你碰巧得到一個額外的列表,當你有一個完全可以被5個項目整除時,你應該爲最後的if聲明做if (($i-1) % 5 != 0) {

2

下面的代碼使用與國防部

$mcat = "<ul>"; 
for($i=0; $i<count($result); $i++){ 
    if($i%5 == 0 && $i > 0) { 
     $mcat .= "</ul><ul>"; 
    } else { 
     $mcat = $mcat . "<li class='refinecategory'><a id='refine_category_0_0' class='browse-category' href='/business/searchreviews?mct=active' rel='active'>".$result[$i]['cat_name']."</a></li>"; 
    } 
} 
$mcat = $mcat . "</ul>"; 
+1

太棒了!謝謝 – d3bug3r 2013-03-07 04:34:36

+0

會不會導致每第五行被跳過? – 2013-03-07 04:35:38

+0

爲什麼有空

    d3bug3r 2013-03-07 04:36:12

    3

    嘗試使用MOD運算符,以每循環5次迭代爲止。

    $mcat = "<ul>"; 
    for($i=0; $i<count($result); $i++){ 
    $mcat = $mcat . "<li class='refinecategory'><a id='refine_category_0_0' class='browse-category' href='/business/searchreviews?mct=active' rel='active'>".$result[$i]['cat_name']."</a></li>"; 
    if($i % 5){ 
    $mcat = $mcat . "</ul><ul>"; 
    } 
    } 
    $mcat = $mcat . "</ul>";