probleme de boucles

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme de boucles

par HD. » 11 août 2005, 14:12

ok merci a tous les 2
je vais utiliser continue 2;
et si jamais ca marche pas je vais faire comme Cyrano (j'aurais du y penser d'ailleurs :oops: )

par cerber » 11 août 2005, 13:40

exit stoppe l'exécution du script ne coupe pas la boucle ...
voila la solution :
Note : Notez que contrairement à d'autres langages, la structure continue s'applique aux structures switch et de comporte différemment de break. Si vous avez un switch dans une boucle, et que vous souhaitez continuer jusqu'à la prochaine itération de la boucle extérieure, vous vous devez utiliser
continue 2;
.

par Cyrano » 11 août 2005, 10:50

Ajoute une clause dans ton while et modifie-le si tu arrives dans le "default" :
while ($id<30)
{
    $fp = fopen($adresse,"r");
    // (...)
    $continue = "ok";
    while ( $ligne < $taille && $continue == "ok")
    {
        switch ($titre[$ligne])
        {
            case is_numeric($titre[$ligne]):
            $valeur=$valeur.$titre[$ligne];
            break;
            case ".":
            $valeur=$valeur.$titre[$ligne];
            break;
            case "0":
            $valeur=$valeur.$titre[$ligne];
            break;
            default :
            $continue = "stop";
            break;
        }
        $ligne++;
    }
    // (...)
    $id++;
}

par Invité » 11 août 2005, 10:28

l'exit c'est pour arreter la boucle
while ( $ligne < $taille ) { 
   switch ($titre[$ligne]) {
sans arreter le 1er while
mais ca marche pas car ca arrete bien le 2eme while mais aussi le 1er

par cerber » 11 août 2005, 09:16

je comprend pas tellement ce que viens faire là ton exit().

Mais si tu veux couper X boucles sur une condition il faut faire break X;
donc dans ton cas
break 2;

probleme de boucles

par HD » 11 août 2005, 08:48

salut
avec ces 2 boucles
while ($id<30) {
$fp = fopen($adresse,"r");
(...)
while ( $ligne < $taille ) {
   switch ($titre[$ligne]) {
case is_numeric($titre[$ligne]):
   $valeur=$valeur.$titre[$ligne];;
   break;
case ".":
   $valeur=$valeur.$titre[$ligne];
   break;
case "0":
   $valeur=$valeur.$titre[$ligne];
   break;
default :
   break;
   }
   $ligne=$ligne+1;
   };
(...)
$id=$id+1;
}
il y a un petit probleme :
apres la ligne :
default :
   break;
je veux arreter la boucle switch (cad le 2eme while )
logiquement je met :
default :
   exit;
sauf que là, ce n'est pas la 2eme boucle qui s'arrete mais la 1ere (le 1er while ) ce que evidemment je ne veux pas
solution? merci