2010-07-13 38 views
0

我很困惑这一点,我的搜索没有提出任何相关的..我需要做一个while循环,如果两个变量中的任何一个是真的,将继续...只要我可以告诉你不能做一个“while($ var =''和$ var2 ='');所以我尝试了这一点,基本上我认为我可以设置2个不同的if语句,以便如果它经过4次迭代就会改变变量”continue“ (如果$ I> = 4),然而,这只是给出了一个无限循环:PHP创建一个依赖于彼此独立的多个变量的while循环?

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

变化而($继续'='1),而($'继续== '1) – 2010-07-13 19:18:32

+0

哦,好吧,我没有得到,现在它回到我为什么(==需要做一个循环语句比较)需要:)谢谢 – Rick 2010-07-13 19:36:51

回答

0

您不应该需要$ continue变量。这应该是关键:

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

请记住,这将始终运行循环至少一次。如果$状态可能一开始就是“真”,你想循环运行零次,如果是,你想:

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

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

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

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

编辑:

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

至于最后一段时间,它只是看起来像一个无限循环给我。

+0

我想要的是如果$ status!='true'(状态不等于'true')就停止循环,如果$ i大于或等于'4'则停止循环,我想我不理解为什么我的第二个“$ continue = 2;”不足以改变继续值以使循环停止。 – Rick 2010-07-13 19:17:20

+0

@Rick - 好吧,让我投入编辑。 – 2010-07-13 19:20:38

2

您正在寻找这样的结构:

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

,将继续运行,而任一条件为真。

2

为什么不能继续工作?

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

只要while parens中的表达式为真,循环就会执行。

+0

使用此模型,您还可以使用布尔返回制作标志变量/方法,并根据脚本的不同部分确定其评估。 – DeaconDesperado 2010-07-13 19:25:55

相关问题