【问题标题】:how to change the while loop condition depending on stuff?如何根据内容更改while循环条件?
【发布时间】:2011-02-12 04:47:00
【问题描述】:

通过这个问题,我的意思是,例如,如果某人的用户名是“bob”,那么 while 循环条件将是 ($i 10)

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

【问题讨论】:

  • 我认为这是一个设计问题。尝试使用策略模式(谷歌它),你可以在你的界面上使用一些方法来引导循环/条件。

标签: php loops conditional-statements while-loop


【解决方案1】:

使do_stuff 成为一个函数,那么它就完全可读(尽管特殊的'bob' 似乎充其量是值得怀疑的)。

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

【讨论】:

  • 如果 $username == bob 然后我删除 while 循环但将代码留在里面怎么办。如果它不是鲍勃,我把while循环...
【解决方案2】:
while( ($username == 'bob' && $i <10 ) XOR $i > 10){}

$username == 'bob' 将首先被评估,如果它是true 然后$i &lt; 10 被评估。

$var1 XOR $var2true 仅当 $var1, $var2 之一是 true 但不是两者。

但我自己会选择this

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        为了让你的代码简单:

        if($username == "bob") { 而($i

        } 别的 { 而 ($i>10){ }

        }

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

        【讨论】:

          猜你喜欢
          • 2014-06-26
          • 2020-08-28
          • 1970-01-01
          • 1970-01-01
          • 2020-07-01
          • 1970-01-01
          • 2020-09-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多