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に必要なliタグは 5 つだけです。それ以上の場合は、別のタグ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

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>";
于 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 に答える