繁体   English   中英

PHP:循环在最后求值但并不总是运行一次?

[英]PHP: Loops that evaluate at the end but do NOT always run once?

好的,所以我知道“ while”循环在开始时求值,因此并不总是运行,而“ do while”循环在结尾时求值并因此总是运行,但是如果我想要一个组合,该怎么办:循环在结束但并不总是运行? 没有一些效率很低的代码,我看不到做到这一点的方法,例如:

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

...当我真正想要的是第一个“ while”循环在迭代期间结束时,$ x超过$ y。 我想我也可以通过第一个“ while”循环中的“ if”语句来完成此操作,但是这似乎也很笨拙且效率低下。 有什么建议么?

您可以使用$continue布尔值。

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

不太复杂。

也许您只是在寻找一种“返回一个循环”的方法? 一种简单的方法是存储先前的迭代,并在循环主体结束后恢复最后的“先前的迭代”值。

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

另一个可能的选择是阐明循环条件的意图:

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

暂无
暂无

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

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