2010-03-12 126 views
3

我需要做一個PHP while循環,但只有當一個變量是真的。而且我無法真正把while循環放在「if」語句中,這看起來很明顯,因爲代碼塊非常龐大,而且會變得很難看,也很難理解。我是否需要將循環中的代碼分解爲一個函數,還是有更簡單的方法來處理這個問題?有條件的while循環在php中?

這裏的基本思想是:

if(condition){ 
    while(another_condition){ 
    //huge block of code loops many times 
    } 
} else { 
    // huge block of code runs once 
} 

我想要的代碼塊巨大而不管執行的條件變量 - 的狀態,但只有當條件爲假執行一次,並執行長如果條件爲真,另一個條件成立。

下面的代碼無法正常工作,但給的是我要完成一個想法:

if(condition){ while(another_condition){ } 
    // huge block of code 
if (condition){ } } // closes the while loop-- obviously throws an error though! 

在此先感謝。

回答

1

這是你在找什麼?

while (condition && another_condition) { 
    // large block of code 
} 
if (!condition) { 
    // do something else 
} 
+1

這就是聖約翰!謝謝你,我想到了,並嘗試了一個do_while循環,但沒有考慮在聲明中提出兩個條件。 謝謝! – julio 2010-03-12 20:03:42

+0

哦,所以我想它的樣子是這樣的: 做{// 巨大的代碼塊 }而(條件&& another_condition) 所以如果條件是假的,它只是執行once._ – julio 2010-03-12 20:05:09

8

如果我明白你的問題正確,你可以使用do ... while()結構:

do 
{ 
    // your code 
} while(condition); 

這將執行// your code一次無論任何因素,然後只對第二次迭代和那些以後將它檢查的條件。

+0

我是個白癡。這是他所要求的,發揮得很好。除了將「條件」改爲「another_condition」 – 2010-03-12 20:01:17

3

爲了便於閱讀,如果您的巨大代碼塊可以在幾個專門功能中分開,請執行此操作。如果您需要稍後調試,它肯定會付出代價。

2

我會將巨大的代碼塊放入一個函數中,以便它可以在沒有重複代碼的情況下再次使用。

function hugeBlockOfCode() { 
    // Huge block of code. 
} 

while (condition && another_condition) { 
    hugeBlockOfCode(); 
} 

if (!condition) { 
    // Run code once. 
    hugeBlockOfCode(); 
} 

do { 
    hugeBlockOfCode(); 
} while (another_condition);