繁体   English   中英

每3个迭代中断一次while循环

[英]Break while loop every 3 iterations

我正在使用此PHP从0-9生成列表。

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

我想更改其工作方式。 3次迭代 ,如果可能的话,我想将打印的文本包装在<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。但是您的输出不会失败,因为模态仅在总计数时才起作用的元素模态为0,在这种情况下10个元素将失败,因为在最后一个循环中,模态语句将不起作用。

当没有除以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>"
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM