2013-03-07 84 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>";