[英]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.