【问题标题】:Need some advice with PHP loop需要一些关于 PHP 循环的建议
【发布时间】:2013-03-10 13:46:01
【问题描述】:

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

我该如何做这个循环?

【问题讨论】:

  • 您可以使用 array_chunk() 将您的数组拆分为包含 5 个元素的数组,然后循环遍历每个元素。

标签: php html database loops


【解决方案1】:

您可以使用NoRewindIterator 和LimitIterator 来做到这一点。只需将从表示结果集的数据库客户端库返回的迭代器包装到 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() 操作,因为默认情况下某些不自动倒带的迭代器需要它,有关所有详细信息,请参阅我创建的参考问题:When does the NoRewindIterator rewind the inner Iterator?

【讨论】:

  • +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>';

【讨论】:

    【解决方案3】:

    使用另一个计数器:

    $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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多