我按照foreach循环打印img html元素。
图像存储在db中,因此如果它们是40,则foreach将打印40 img
现在我需要它,如果它们是40 in db并且我需要打印100个img元素,重复循环直到它们是100,是否可以这样做?
编辑:
要清楚,我从db中检索40 img,我需要打印“100 OF THEM”(如果它们小于100则重复它们)...希望很明确:P
答案 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。
答案 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;
}
}