需要一些PHP循环的建议

时间:2013-03-10 13:46:02

标签: php html database loops

我需要创建一个从数据库中获取数据的循环...并在<li>中打印数据但是每5 li需要在ul ... < / p>

我该怎么做这个循环?

3 个答案:

答案 0 :(得分:4)

您可以使用NoRewindIteratorLimitIterator执行此操作。只需将从表示结果集的数据库客户端库中返回的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