Switch

cs_ToToL Messages postés 170 Date d'inscription vendredi 25 avril 2003 Statut Membre Dernière intervention 9 juillet 2008 - 17 mai 2007 à 11:46
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 - 17 mai 2007 à 16:05
Bonjour,

Premièrement voici mon code :

$toto='aa';
switch ($toto) {
case'bb': echo'rien'; break;
case'aa': echo'aa'; $toto='ii'; break;
case'cc': echo'rooo'; break;
case'ii': echo'cool'; break;
}

Je souhaite que celui ci affiche aacool

Le problème est le suivant :
Avec les break , il m'affiche aa ( logique )
Sans , il m'affiche aarooocool ( logique également )

Que faire ?

Merci

ToToL

10 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
17 mai 2007 à 12:11
Salut,

switch ($toto) {
case'bb': echo'rien'; break;
case'cc': echo'rooo'; break;
case'aa': echo'aa'; $toto='ii';
case'ii': echo'cool'; break;
}

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
17 mai 2007 à 12:15
Salut,

Switch étudie la condition et, selon ce que ça donne, exécute le code qui correspond. Il n'en exécute pas d'autre : dès qu'il rencontre break, le script quitte la boucle switch. Il n'exécutera donc pas un autre case.

Si tu changes la valeur de ta variable dans le switch et que tu veux faire un test sur sa nouvelle valeur, il faut que tu fasses un autre test après le switch.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
17 mai 2007 à 12:17
Salut,

si tu lis mon code, tu veras que le break n'est pas obligatoire partout...

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
cs_ToToL Messages postés 170 Date d'inscription vendredi 25 avril 2003 Statut Membre Dernière intervention 9 juillet 2008
17 mai 2007 à 12:35
Cette portion de code , est une image du mien, en réalité j'ai environ 20 case.

Le problème est que je ne peux pas inverser les case

Que faire si je veux garder mon switch ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
17 mai 2007 à 12:38
2 solutions :
- dupliquer le code du case 'ii' dans le case 'aa'
- faire un second test après le switch

Sinon, si tu as un break à chaque case, tu peux les mettre dans n'importe quel ordre, sauf le default qui vient à la fin.
0
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
17 mai 2007 à 13:17
salut:
====
function cas($toto,$retour)
{
if($retour !="aacool")
{
switch ($toto)
{
case'bb': $retour='rien'; break;
case'cc': $retour='rooo'; break;
case'aa': $retour='aa'; $toto='ii';
case'ii': $retour.='cool'; break;
}
return cas($toto,$retour);
}else{
return $retour;
}

}

/////
$cas('aa','');
0
cs_ToToL Messages postés 170 Date d'inscription vendredi 25 avril 2003 Statut Membre Dernière intervention 9 juillet 2008
17 mai 2007 à 13:23
Donc il n'y a pas de réel solution à mon problème. Domage , j'aurai pensé qu'une fonction du genre switch_refesh() aurai existé

Merci
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
17 mai 2007 à 13:42
Ce que tu peux faire, c'est une fonction récursive qui fait la même boucle switch plusieurs fois jusqu'à ce qu'il n'y ait plus de traitement à faire.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
17 mai 2007 à 16:03
Salut,

et pourquoi tu ne peux pas inverser l'odre de tes cases ?

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
17 mai 2007 à 16:05
il a dit qu'en réalité yavai beaucoup de cases
alors la récursion est une bonne solution..
0
Rejoignez-nous