PHP重复foreach直到

时间:2012-09-23 09:08:20

标签: php foreach repeater

我按照foreach循环打印img html元素。

图像存储在db中,因此如果它们是40,则foreach将打印40 img

现在我需要它,如果它们是40 in db并且我需要打印100个img元素,重复循环直到它们是100,是否可以这样做?

编辑:

要清楚,我从db中检索40 img,我需要打印“100 OF THEM”(如果它们小于100则重复它们)...希望很明确:P

4 个答案:

答案 0 :(得分:6)

您可以使用Iterators

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

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

ArrayIterator使$imgArray可由其他迭代器迭代。当ArrayIterator到达$imgArray的末尾时,InfiniteIterator会使包裹的$images重新开始。最后,LimitIterator会将迭代限制为100个项目。

因此,当您遍历foreach时,{{1}}将覆盖图像数组中的元素,一遍又一遍地重复这些元素,直到打印出100个元素,例如:这将输出图像1-40,然后再输出1-40,最后输出1-20,因为40 + 40 + 20 = 100。

演示:http://codepad.org/YeDgpsVc

答案 1 :(得分:4)

重复100次并在索引上使用modulus operator

$images = function_to_fetch_images();

for($i=0, $count = count($images); $i<100; $i++) {
  echo $images[$i % $count];
}

答案 2 :(得分:0)

我不太确定我是否理解这个问题,但我猜你想要显示100张图像,但是如果小于100则重复一些图像。如果是这样,你可以使用{{1迭代遍历所有图像的循环,然后当你在最后一张图像时,没有输出100张图像,回到第一张图像。

for

答案 3 :(得分:0)

您需要一个嵌套循环。我假设你的意思是你希望重复图像集中的元素,直到你在屏幕上有100个图像,即使这意味着一些图像是重复的。

for ($i = 0; $i < 100;) {
    foreach($imageSet as $image) {
        echo $image;
        $i++;
        if ($i < 100) break;
    }
}