1

foreachサイクルでimghtml要素を出力します。

画像はdbに保存されるため、40の場合、foreachは40imgを出力します

今、それらがdbで40であり、100 img要素を印刷する必要がある場合、それらが100になるまでサイクルを繰り返す必要がありますが、それは可能ですか?

編集:

明確にするために、私はdbから40 imgを取得し、「100 OF THEM」を印刷する必要があります(100未満の場合は繰り返します)...希望は明確です:P

4

4 に答える 4

6

イテレータを使用できます:

$images = new LimitIterator(
    new InfiniteIterator(
        new ArrayIterator($imgArray)
    ), 
    0, 100
);

foreach ($images as $image) {
    // print images
}

は、他のイテレータによる反復可能にArrayIteratorなります。$imgArrayは、の終わりに達したときに、最初からInfiniteIteratorラップされた最初からやり直します。最後に、は反復を100アイテムに制限します。ArrayIterator$imgArrayLimitIterator

したがって、を繰り返すと$imagesforeach100個の要素が印刷されるまで、画像配列内の要素を繰り返し処理します。たとえば、これにより、画像が1〜40、次に1〜40、最後に1〜​​20が出力されます。 40 + 20=100。

デモ:http ://codepad.org/YeDgpsVc

于 2012-09-23T09:25:30.770 に答える
4

100回繰り返し、インデックスで剰余演算子を使用します。

$images = function_to_fetch_images();

for($i=0, $count = count($images); $i<100; $i++) {
  echo $images[$i % $count];
}
于 2012-09-23T09:18:11.600 に答える
0

質問を理解できるかどうかはわかりませんが、100枚の画像を表示したいと思いますが、100枚未満の場合は、一部の画像を繰り返します。その場合は、forすべての画像を繰り返すループを使用できます。画像を表示し、最後の画像に到達し、100枚の画像が出力されていない場合は、最初の画像に戻ります。

for ($i = 0, $j = count($images); $i < 100; $i++)
{
    echo $images[$i % $j];
}
于 2012-09-23T09:16:17.137 に答える
0

このためにネストされたループが必要になります。一部の画像が重複している場合でも、画面に100枚の画像が表示されるまで、画像セットの要素を繰り返し処理することを意味していると思います。

for ($i = 0; $i < 100;) {
    foreach($imageSet as $image) {
        echo $image;
        $i++;
        if ($i < 100) break;
    }
}
于 2012-09-23T09:16:24.477 に答える