如何根据东西来改变while循环条件?

如何根据东西来改变while循环条件?

问题描述:

这个问题我的意思是,如果,例如,某人的用户名是“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

尝试在if和else块内创建两个不同的while循环。

这是你的意思吗?您可以根据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(); 
    } 
} 

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

保持代码简单:

如果($用户名== “鲍勃”) { 而($ I < 10){}

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

}

还有其他更好的方法来处理它,但它们可能会使你的代码难以理解,比如使用我不喜欢的eval。

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

$username == 'bob'会,如果它出来是true然后$i < 10评估首先评估。

$var1 XOR $var2true只有当$var1, $var2一个是true但不能同时使用。

但我自己会去this