0

同じ条件で if ステートメントが異なる 2 つの while ループを 1 ページに含めることはできますか?

例えば:

$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

確かに、しかし、それらを1つずつ持っている場合、最初のものを壊すには、強制的に壊すか、作る必要があります$qtytoAdd != 0

後者の場合、2 番目のループが実行されません。

何をしようとしているのかを説明すれば、もっとエレガントな方法があるはずです。


あなたが実際に探しているのはこれだけだと思います:

$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 に答える
1

まず、 を使用してループを中断する代わりに、 を使用してループを完全に中断するか、ループの次のステップにスキップする$qtytoAdd = 0ことができます。breakcontinue

そして、次の方法でループをマージできます。 $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 に答える