0

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

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

4 回答 4

2

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

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

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

于 2010-07-13T19:09:58.357 回答
2

为什么以下不起作用?

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

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

于 2010-07-13T19:10:27.413 回答
1

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

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

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

编辑:

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

至于最后一段时间,它对我来说就像一个无限循环。

于 2010-07-13T19:08:37.477 回答
0

您不需要 $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++;
}
于 2010-07-13T20:00:07.410 回答