PHP:最后评估但不总是运行一次的循环?

时间:2014-09-29 00:38:59

标签: php loops while-loop

好的,所以我知道"而#34;循环在开始时评估,因此不总是运行,而"同时"循环评估结束,因此总是运行,但如果我想要一个组合怎么办:循环在结束时评估,但不总是运行?如果没有一些相当低效的代码,我无法看到这样做的方法,例如:

  while($x < $y)
  {
  $x = $x + 100;
  $while = "true";
  }
  if($while == "true")
  {
  $x = $x- 100;
  }

...当我真正想要的是第一个&#34;而#34;在$ x超过$ y之前迭代期间循环结束。我想我也可以通过&#34; if&#34;在第一个&#34; while&#34;循环,但这似乎相当笨重和低效。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您可以使用$continue布尔值。

$continue = true;
while($x < $y && $continue) {
    // do stuff
    $continue = (/* some comparison such as, $y > 100 */);
}

不太复杂。

答案 1 :(得分:1)

也许你只是想找到一种方法来回归一个循环&#34;?这样做的一个简单方法是存储前一次迭代,并恢复最后一次迭代&#34;循环体结束后的值。

$z = 0;
while ($x < $y) {
  $z = $x;
  $x += 100;
}
$x = $z;

另一个可能的选择是澄清你在循环条件中的意图:

while (($x < $y) and (($y-$x)>100)) { $x += 100; }