【问题标题】:PHP creating a while loop that is dependent on multiple variables that are independent of one another?PHP创建一个依赖于多个相互独立的变量的while循环?
【发布时间】:2010-07-13 19:06:20
【问题描述】:

我对此感到困惑,我的搜索没有出现任何相关的内容。我需要做一个 while 循环,如果 2 个变量中的任何一个为真,该循环将继续……据我所知,你可以t 做一个 "while ($var = '' and $var2 = ''); 所以我尝试了这个,基本上我想我可以设置 2 个不同的 if 语句,这样如果它超过 4,它会改变变量 "continue"迭代(如果 $i >= 4),但这只会给出一个无限循环:

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

【问题讨论】:

  • 将 while ($continue = 1 ) 更改为 while ($continue == 1 )
  • 哦,好吧,我没听懂,现在它回到我身边,至于为什么(== 是在循环语句中进行比较所必需的)那需要 :) 谢谢跨度>

标签: php if-statement infinite-loop


【解决方案1】:

您是否正在寻找这样的构造:

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

当任一条件为真时,它将继续运行。

【讨论】:

    【解决方案2】:

    为什么以下方法不起作用?

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

    只要 while 括号内的表达式为真,循环就会执行。

    【讨论】:

    • 使用此模型,您还可以使用布尔返回来制作标志变量/方法,并从脚本的不同部分确定它们的评估。
    【解决方案3】:

    while 语句计算一个布尔表达式。你应该可以写出:

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

    同样在您的代码中(如果它是 c/p),您的 $continue = 1。这将始终评估为真。

    编辑:

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

    至于最后一段时间,我觉得它就像一个无限循环。

    【讨论】:

    • 我想要的是它在 $status != 'true' (状态不等于 'true')时停止循环,或者在 $i 大于或等于 '4' 时停止循环,我想我不明白为什么我的第二个 if 使用 "$continue = 2;"不足以更改 continue 值以使循环停止。
    【解决方案4】:

    您不应该需要 $continue 变量。这应该可以解决问题:

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

    请记住,这将始终至少运行一次循环。如果 $status 可能以“true”开始,并且您希望循环运行零次(如果是),您希望:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-14
      • 2022-07-11
      • 2011-09-08
      相关资源
      最近更新 更多