0

我可以在一页中有两个条件相同但 if 语句不同的 while 循环吗?

例如:

$qtytoAdd = $rec_qty[$mat_key];

while($qtytoAdd > 0){
    if(($remBalance - $qtytoAdd) >= 0) {
    //do something
    $qtytoAdd = 0
    }else{
    //do something
    $qtytoAdd = $qtytoAdd - $remBalance
    }
}

像这样的东西:

while($qtytoAdd > 0){
    if(($reqRemBal- $qtytoAdd) >= 0) {
    //do something
    $qtytoAdd = 0
    }else{
    //do something
    $qtytoAdd = $qtytoAdd - $reqRemBal
    }
}

$qtytoAdd变量实际上是在循环之前的开头定义的。我想要做的是同时运行两个while循环$qtytoAdd,每个while循环首先具有相同的值。

4

2 回答 2

1

首先,$qtytoAdd = 0您可以简单地使用break来完全跳出循环或continue跳到循环的下一步,而不是使用破坏循环。

然后你可以用这种方式合并循环: $qtytoAdd = $rec_qty[$mat_key];

while($qtytoAdd > 0){
    if (($remBalance - $qtytoAdd) >= 0 || ($reqRemBal- $qtytoAdd) >= 0) {
        // Do something
        break;
    }
    if (($remBalance - $qtytoAdd) < 0) {
        $qtytoAdd = $qtytoAdd - $remBalance
    } elseif (($reqRemBal- $qtytoAdd) < 0) {
        $qtytoAdd = $qtytoAdd - $reqRemBal
    }
}
于 2013-02-02T15:23:19.573 回答
1

当然可以,但是如果你每个之后都有一个,然后打破第一个,你要么需要强制休息,要么让$qtytoAdd != 0

如果是后者,则会导致第二个循环不被执行。

如果你解释你想要做什么,应该有一个更优雅的方式来做到这一点。


我认为您实际上正在寻找的是:

$qtytoAdd = $rec_qty[$mat_key];

while($qtytoAdd > 0){
    if(($remBalance - $qtytoAdd) >= 0) {
    //do something
    $qtytoAdd = 0
    }else{
    //do something
    $qtytoAdd = $qtytoAdd - $remBalance
    }
    //second block
    if(($reqRemBal- $qtytoAdd) >= 0) {
    //do something
    $qtytoAdd = 0
    }else{
    //do something
    $qtytoAdd = $qtytoAdd - $reqRemBal
    }
}
于 2013-02-02T14:56:37.090 回答