probleme de boucles

HD
Mammouth du PHP | 1181 Messages

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

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

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;
"... demanda à voir le CV du recruteur pour être sûr que le chef du personnel était compétent".

Invité
Invité n'ayant pas de compte PHPfrance

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

Mammouth du PHP | 19672 Messages

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++;
}
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

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;
.
"... demanda à voir le CV du recruteur pour être sûr que le chef du personnel était compétent".

HD.
Invité n'ayant pas de compte PHPfrance

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: )