两个while循环在一个页面中

时间:2013-02-02 14:53:34

标签: php loops while-loop

我可以在一个页面中有两个相同条件但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循环,每个while $qtytoAdd的while循环首先具有相同的值。

2 个答案:

答案 0 :(得分: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
    }
}

答案 1 :(得分: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
    }
}