foreach循环在哪里是结束ul的地方?

时间:2015-06-28 12:59:44

标签: php list loops foreach

我想显示所有现有类别和所有帖子。

我写了一个foreach循环,但我不知道结束ul标记的位置。

我的代码:

<?php
 $current_cat = 0;
 $curr_nb_item = 0;
 foreach($blog_widget as $row)
   {
   if($current_cat != $row->category_id)
    {   
    $current_cat = $row->category_id;
    echo "<ul>     " . $row->category_id . " ";    
    echo "<li>";
    echo $row->title;
    echo "</li>";
    ++$curr_nb_item;            
   }
    else { 
        echo "<li>";
        echo $row->title;
        echo "</li>";
        ++$curr_nb_item;    
    }
}
?>

现在我在html中得到了这个结果:

<ul>1
<li>
cat 1 post n
</li>
<li>
cat 1 post h
</li>

<ul>2
<li>
cat 2 post x
</li>
<li>
cat 2 post y
</li>

我尝试了很多没有结果的变化。我希望有人可以帮助我。非常感谢。

1 个答案:

答案 0 :(得分:1)

这可能不是最干净的,但应该有效。修改if语句的顶部如下所示:

if($current_cat != $row->category_id)
{
    if ($row != $blog_widget[0])
    {
        echo "</ul>";
    }

    $current_cat = $row->category_id;
    echo "<ul>     " . $row->category_id . " ";

    // etc...

然后在你的foreach循环的结束括号之后:

echo "</ul>";