好的,所以我知道"而#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;循环,但这似乎相当笨重和低效。有什么建议吗?
答案 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; }