是否可以在达到某种条件时控制for循环?
说明:
我正在检索数据库中图像集合的文件夹路径:然后通过for循环打印出这些图像。我需要做的是控制这些图像在页面上的显示方式(例如,每行5个图像)。 截至目前,for循环在一行中打印出40个图像,这使您可以滚动到页面的最右侧。
是否存在用于控制for循环的解决方案,例如,在5个成功循环之后,回显出< br>?这是一个粗俗的想法:
for ($i = 1; $i < $rows; $i++) {
$path = $image[$i];
$folder_path = $path['folder_path']; //since it's an array
echo '<img src="' . $folder_path . '">';
//pseudocode
if ($i == 5) {
echo '<br>';
...continue with the loop
}
}
我知道伪代码看起来很疯狂,但这就是我需要做的事情:循环x个实例,添加一些东西,然后继续。
答案 0 :(得分:1)
相同的循环。插入的条件是($ i%5 == 0),这意味着(如果这个元素是他的系列的第五个元素)将对你有用。
<?php
for ($i = 1; $i < $rows; $i++) {
$path = $image[$i];
$folder_path = $path['folder_path'];
echo '<img src="' . $folder_path . '">';
if ($i % 5 == 0) {
echo '<br>';
}
}
答案 1 :(得分:1)
根据@ m69的评论,最好的选择是使用%
(模数)比较运算符。正如PHP docs:
$ a%$ b返回$ a的剩余部分除以$ b。
所以,在你的情况下:
for ($i = 0; $i < $rows; $i++) {
$path = $image[$i];
$folder_path = $path['folder_path']; //since it's an array
echo '<img src="' . $folder_path . '">';
if ($i % 5 == 0) { //do this if $i divided by 5 has a remainder of 0
echo '<br>';
}
}
作为旁注,您应该在for循环的开头将$i
设置为0,假设$rows
设置为从查询返回的行数。将其设置为1将使其不会迭代到最后一行,因为$i
将== 40
(假设为40行),因此不会是< 40
。