2010-04-25 78 views
1

這個問題我的意思是,如果,例如,某人的用戶名是「bob」,那麼while循環條件將是($ i < 10),並且如果用戶名是別的東西,那麼while循環條件將是$ i> 10)如何根據東西來改變while循環條件?

if($username == "bob") 
{ 
    //make this while loop condition: ($i < 10) 
    // it means: while($i <10){ so stuff} 
} 
else 
{ 
    //make the while loop condition: ($i >10) 
} 
+0

我認爲這成爲一個設計問題。嘗試使用策略模式(谷歌它),你可以在你的界面上有一些方法來指導循環/條件。 – 2010-04-25 22:20:49

回答

0

嘗試在if和else塊內創建兩個不同的while循環。

0

這是你的意思嗎?您可以根據if的成功或失敗採取不同的路徑。如果裏面的代碼是相同的,只需調用一個方法來避免重複。

if($username == "bob") 
{ 
    //make this while loop condition: ($i < 10) 
    // it means: while($i <10){ so stuff} 
    while ($i < 10) { 
     call_method(); 
    } 
} 
else 
{ 
    while ($i > 10) { 
     call_method(); 
    } 
} 
4

do_stuff的功能,那麼這是完全可讀(雖然特殊外殼「鮑勃」似乎值得懷疑的最好)。

if($username == "bob") 
{ 
    while($i<10) { 
     do_stuff(); 
    } 
} 
else 
{ 
    while($i>10) { 
     do_stuff(); 
    } 
} 
+0

以及如果$ username == bob然後我刪除while循環但將代碼留在裏面。如果不是鮑勃,我把while循環... – linkcool 2010-04-26 00:21:01

0

保持代碼簡單:

如果($用戶名== 「鮑勃」) { 而($ I < 10){}

} 其他 { while($ i> 10){ }

}

還有其他更好的方法來處理它,但它們可能會使你的代碼難以理解,比如使用我不喜歡的eval。

2
while(($username == 'bob' && $i <10) XOR $i > 10){} 

$username == 'bob'會,如果它出來是true然後$i < 10評估首先評估。

$var1 XOR $var2true只有當$var1, $var2一個是true但不能同時使用。

但我自己會去this