2010-07-13 35 views
0

我很困惑這一點,我的搜索沒有提出任何相關的..我需要做一個while循環,如果兩個變量中的任何一個是真的,將繼續...只要我可以告訴你不能做一個「while($ var =''和$ var2 ='');所以我嘗試了這一點,基本上我認爲我可以設置2個不同的if語句,以便如果它經過4次迭代就會改變變量」continue「 (如果$ I> = 4),然而,這只是給出了一個無限循環:PHP創建一個依賴於彼此獨立的多個變量的while循環?

function whiletest() { 
    $i = 1; 
    do { 
     echo 'output'; 
     if ($status != 'true') { 
      $continue = 1 ; 
     } 
     if ($i >= 4) { 
      $continue = 2 ; 
     } 
     $i++ ; 
    } while ($continue = 1); 
} 
+0

變化而($繼續'='1),而($'繼續== '1) – 2010-07-13 19:18:32

+0

哦,好吧,我沒有得到,現在它回到我爲什麼(==需要做一個循環語句比較)需要:)謝謝 – Rick 2010-07-13 19:36:51

回答

0

您不應該需要$ continue變量。這應該是關鍵:

$i = 1; 
do { 
    //do other stuff here (possibly changing the value of $status) 
    echo 'output'; 
    $i++; 
} while ($status != 'true' && $i < 4); 

請記住,這將始終運行循環至少一次。如果$狀態可能一開始就是「真」,你想循環運行零次,如果是,你想:

$i = 1; 
while ($status != 'true' && $i < 4) { 
    //do other stuff here (possibly changing the value of $status) 
    echo 'output'; 
    $i++; 
} 
1

while語句計算一個布爾表達式,你應該能夠寫出來:

while(($status != true) && ($continue == 1)) {} 

同樣在你的代碼中(如果它是一個c/p),你有$ continue = 1。這將始終評估爲true。

編輯:

while (($status) && ($i < 4)) 

至於最後一段時間,它只是看起來像一個無限循環給我。

+0

我想要的是如果$ status!='true'(狀態不等於'true')就停止循環,如果$ i大於或等於'4'則停止循環,我想我不理解爲什麼我的第二個「$ continue = 2;」不足以改變繼續值以使循環停止。 – Rick 2010-07-13 19:17:20

+0

@Rick - 好吧,讓我投入編輯。 – 2010-07-13 19:20:38

2

您正在尋找這樣的結構:

while($var1 == 'value1' OR $var2 == 'value2') { 
    ... 
} 

,將繼續運行,而任一條件爲真。

2

爲什麼不能繼續工作?

while (($condition1) || ($condition2)) { 
    // loop stuff 
} 

只要while parens中的表達式爲真,循環就會執行。

+0

使用此模型,您還可以使用布爾返回製作標誌變量/方法,並根據腳本的不同部分確定其評估。 – DeaconDesperado 2010-07-13 19:25:55

相關問題