2

目前,我从 MySQL 获取数据如下:

$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

4

3 回答 3

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 (($i-1) % 5 != 0) {为最后一个if语句做。

于 2013-03-07T04:32:31.400 回答
3

尝试在循环的每 5 次迭代中使用 MOD 运算符来做一些特别的事情。

$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>";
于 2013-03-07T04:33:19.793 回答
2

将以下代码与 mod 一起使用

$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>";
于 2013-03-07T04:31:39.277 回答