0

dbからデータを取得するループを作成する必要があります...そしてデータを出力しますが、<li>5つごとliul...

どうすればこのループを実行できますか?

4

3 に答える 3

4

あなたはとでそれを行うことができNoRewindIteratorますLimitIterator。結果セットを表すデータベースクライアントライブラリから取得したイテレータをにラップするだけで、イテレータ全体が無効になるまで、NoRewindIteratorそれぞれ5回の反復を実行できます。LimitIterator

$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()。すべての詳細については、私が作成した参照質問を参照してください:NoRewindIteratorはいつ内側のイテレーターを巻き戻しますか?

于 2013-03-10T13:57:36.743 に答える
2

modulo演算子を使ってみませんか?

$counter = 0;

echo '<ul>';

while ($row = fetchRow())
{
    $counter++;

    if ($counter % 5 == 0) echo '</ul><ul>';

    echo '<li>' . $row['field'] . '</li>';
}

echo '</ul>';
于 2013-03-10T15:00:48.687 に答える
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
于 2013-03-10T14:02:16.070 に答える