我需要创建一个从数据库中获取数据的循环...并在<li>
中打印数据但是每5 li
需要在ul
... < / p>
我该怎么做这个循环?
答案 0 :(得分:4)
您可以使用NoRewindIterator
和LimitIterator
执行此操作。只需将从表示结果集的数据库客户端库中返回的Iterator包装回NoRewindIterator
,然后您可以使用LimitIterator
进行5次迭代,直到整个迭代器无效为止:
$it = new NoRewindIterator($result);
$it->getInnerIterator()->rewind(); # Rewind once
while ($it->valid())
{
echo '<ul>';
foreach (new LimitIterator($it, 0, 5) as $row)
{
echo '<li>', .... , '</li>' ;
}
echo '</ul>';
}
编辑:添加了rewind()
操作,因为默认情况下需要一些不自动倒回的迭代器,因为所有细节都会看到我创建的参考问题:{{ 3}}
答案 1 :(得分:2)
为什么不使用modulo
运算符?
$counter = 0;
echo '<ul>';
while ($row = fetchRow())
{
$counter++;
if ($counter % 5 == 0) echo '</ul><ul>';
echo '<li>' . $row['field'] . '</li>';
}
echo '</ul>';
答案 2 :(得分:0)
使用另一个计数器:
$counter=0;
echo '<ul>';
while($record_in_database=fetch_it_somehow){
if($counter==5){
$counter=0;
echo '</ul><ul>'; // *
}
echo '<li>'.$record_in_database->retrieve_data_somehow().'</li>';
++$counter;
} // end while
echo '</ul>'; // you must close it as you've opened in * marked line