2010-07-13 6 views
0

Je suis perplexe sur ce point et mes recherches n'indiquent rien de pertinent. Je dois faire une boucle while qui continuera si l'une des deux variables est vraie ... pour autant que je puisse dire que vous ne pouvez pas fais un "while ($ var = '' et $ var2 = ''), donc j'ai essayé ça, je me suis dit que je pouvais simplement définir 2 instructions if différentes pour que ça change la variable" continue "si elle dépassait 4 itérations (si $ i> = 4), mais cela donne juste une boucle infinie:PHP créant une boucle while dépendante de plusieurs variables indépendantes les unes des autres?

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

Changement while ($ continuer '=' 1) pour while ($ continuer '== '1) –

+0

oh, ok je n'ai pas compris cela, maintenant il me revient aussi loin que pourquoi (le == est nécessaire de faire une comparaison dans une déclaration de boucle) ce qui est nécessaire :) merci – Rick

Répondre

0

Vous ne devriez pas avoir besoin de la variable $ continue. Cela devrait faire l'affaire:

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

Gardez à l'esprit que ce sera toujours courir la boucle au moins une fois. Si l'état de $ pourrait commencer comme « vrai » et que vous voulez la boucle pour exécuter zéro fois si elle est, vous voulez:

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

L'instruction while évalue une expression booléenne Vous devriez être en mesure d'écrire.

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

Aussi dans votre code (si c'est un c/p), vous avez $ continuer = 1. Cela sera toujours évalué à vrai.

EDIT:

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

Quant au dernier moment, il ressemble à une boucle infinie pour moi.

+0

Ce que je veux est pour pour arrêter la boucle si $ status! = 'true' (le statut n'est pas égal à 'true') ou pour arrêter si $ i est supérieur ou égal à '4', je suppose que je ne comprends pas pourquoi ma seconde si avec "$ continue = 2;" n'est pas suffisant pour changer la valeur continue pour arrêter la boucle. – Rick

+0

@Rick - Ok laissez-moi jeter dans un montage. –

2

Vous cherchez une construction comme celui-ci:

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

qui continuera de fonctionner pendant une ou l'autre condition est vraie.

2

Pourquoi ce qui suit ne fonctionnerait-il pas?

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

Tant que l'expression dans le parens while est vraie, la boucle s'exécutera.

+0

En utilisant ce modèle, vous pouvez également faire des variables/méthodes flag avec des retours booléens et déterminer leur évaluation à partir de parties séparées du script. – DeaconDesperado

Questions connexes