2013-02-02 49 views
0

我可以有兩個while循環條件相同但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循環首先具有相同的值。

+1

你試過了嗎?如果是這樣,發生了什麼?如果不是,爲什麼? – Jon

+0

你是否希望同時完成兩個運行?就目前而言,這是可能的。但是它會先運行第一個循環,直到第一個循環結束,然後是第二個循環。 – TheDeadLike

+0

在進入第二個循環之前不會退出。 – SparKot

回答

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 
    } 
} 
+0

如何打破循環先生? – chris

+0

@chris只是簡單地'打破' http://php.net/manual/en/control-structures.break.php –

+0

@chris嘗試更新 –

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 
    } 
}