我通过 foreach 循环打印 img html 元素。
图像存储在 db 中,所以如果它们是 40 foreach 将打印 40 img
现在我需要,如果它们在 db 中有 40 个并且我需要打印 100 个 img 元素,重复循环直到它们达到 100 个,是否可以这样做?
编辑:
明确地说,我从 db 中检索了 40 个 img,我需要打印“100 OF THEM”(如果它们小于 100,则重复它们)......希望很清楚:P
您可以使用迭代器:
$images = new LimitIterator(
new InfiniteIterator(
new ArrayIterator($imgArray)
),
0, 100
);
foreach ($images as $image) {
// print images
}
这ArrayIterator
使您$imgArray
可以被其他迭代器迭代。将InfiniteIterator
在包装结束ArrayIterator
时从头开始重新开始$imgArray
。最后,LimitIterator
将迭代限制为 100 个项目。
因此,当您迭代时$images
,foreach
将遍历图像数组中的元素,一遍又一遍地重复它们,直到打印了 100 个元素,例如这将输出图像 1-40,然后再输出 1-40,最后输出 1-20,因为 40+ 40+20=100。
重复 100 次并在索引上使用模运算符:
$images = function_to_fetch_images();
for($i=0, $count = count($images); $i<100; $i++) {
echo $images[$i % $count];
}
我不太确定我是否理解这个问题,但我猜你想显示 100 张图像,但如果少于 100 张,则重复一些图像。如果是这样,你可以使用一个for
循环遍历所有图像,然后当你在最后一张图像,并且还没有输出 100 张图像时,回到第一个图像。
for ($i = 0, $j = count($images); $i < 100; $i++)
{
echo $images[$i % $j];
}
为此,您将需要一个嵌套循环。我假设您的意思是您希望重复图像集中的元素,直到屏幕上出现 100 张图像,即使这意味着某些图像被复制。
for ($i = 0; $i < 100;) {
foreach($imageSet as $image) {
echo $image;
$i++;
if ($i < 100) break;
}
}