控制环路输出

时间:2015-08-31 03:07:41

标签: php for-loop

是否可以在达到某种条件时控制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个实例,添加一些东西,然后继续。

2 个答案:

答案 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