每3次迭代中断while循环


Break while loop every 3 iterations

我使用这个PHP生成0-9的列表。

$counter = 0; 
WHILE ($counter < 10) 
{ 
  print "counter is now " . $counter . "<br>"; 
  $counter++; 
}

我想改变它的工作方式。如果可能的话,每第三次迭代,我都希望将打印的文本包装在<div>中。

所以最终我输出的代码是:

<div>
counter is now 0
counter is now 1
counter is now 2
</div>
<div>
counter is now 3
counter is now 4
counter is now 5
</div>
<div>
counter is now 6
counter is now 7
counter is now 8
</div>
<div>
counter is now 9
</div>

使用模数运算符,您可以每3次迭代分割输出,但仍需要检查可能生成空div块的limit

<?php
$counter = 0; 
$limit = 10;
print "<div>'n";
while ($counter < $limit) { 
  print "counter is now " . $counter . "<br>'n"; 
  if (++$counter % 3 === 0 && $counter < $limit) {
    print "</div>'n<div>'n";
  }
}
print "</div>'n";

使用模数进行

while($counter < 10) {
   if($counter % 3 == 0) {
       //Do something for the third row
   }
   $counter++;
}

尝试使用:

$counter = 0;
$block_count = 0;
echo "<div>";
while ($counter < 10) {
if ($block_count === 3) {
    echo "</div><div>";
    $block_count = 0;
}
  echo "counter is now " . $counter . "<br>";
  $block_count++;
  $counter++; 
}
echo "</div>";

我不知道php,但我认为逻辑是一样的:

$counter2 =0; //count to 10
$stopIteration =10;
WHILE($counter2<$stopIteration){ 
    print "<div>";
    $counter1 =0; //count to 3
    WHILE($counter1<3){
        print "counter is now".$counter2."<br>";
        $counter1++;
        $counter2++;
    }
    print "</div>"; 
} 

我发现,对于这类任务,最好的故障保护方法是将数组中的所有数据(在本例中为所有10个打印字符串)分组,而不是将数组分割成块http://php.net/manual/en/function.array-chunk.php,然后您可以使用这个新数组,因为它被划分为块,其中每个块不大于3。但是您的输出不会失败,因为只有当modal的元素总数为0时,modal才会工作,在这种情况下,10个元素会失败,因为在最后一个循环中,modal语句不起作用。

当没有用3除的总元素时,这将添加故障保护。

$counter = 0; 
$arr = array();
WHILE ($counter < 10) 
{ 
  $arr[] =  "counter is now " . $counter . "<br>"; 
  $counter++; 
}
$arr = array_chunk($arr, 3);
foreach ($arr as $chunk) {
    //wrap each chunk into div
    echo "<div>"
    foreach ($chunk as $string) {
        //print your string here
     }
    echo "</div>"
}