OVH Cloud OVH Cloud

Sauter d'un "case" a un autre dans un "switch"

11 réponses
Avatar
Dominique Ottello
Bonjour,

Dans une structure switch ($mode) {
case 1:
...
break;

case 2:
...
break;

case 3:
...
break;
}

Je peux passer de case 1: à case 2: ou de case 2: à case 3: en
effectuant un "break" conditionnel.

Mais je n'arrive pas à passer, avec une condition dans case 1:,
directement à case 3:, même avec continue;

Est-ce possible ?

Merci.
--
= Dominique Ottello = http://www.ottello.net
Aujourd'hui, l'idéal du progrès est remplacé par l'idéal de l'innovation :
il ne s'agit pas que ce soit mieux, il s'agit seulement que ce soit nouveau,
même si c'est pire qu'avant et cela de toute évidence. Montherlant

1 réponse

1 2
Avatar
Olivier Miakinen
Sinon, si je peux me permettre un conseil, lorsque tu veux enchaîner
d'un case à un autre, mets *toujours* un commentaire pour dire que
l'absence de break est volontaire.


Marrant parce que moi je dirai l'inverse ;)
Pouvoir passer au cas suivant tout seul c'est le rôle de switch, sa
raison d'être. Si le but est de faire des cas exclusif alors la bonne
syntaxe (si tant est qu'il y en est une) est plutot if/elsif/else (qui
elle est faite pour). C'est au contraire quand je suis amené à faire un
break ou deux dans un switch que je le commente durement.

Ma question c'est : si c'est pour toujours mettre des break, pourquoi un
switch ? la syntaxe if/else/else est globalement plus claire (comprendre:
plus homogène avec le reste de la syntaxe).


Je ne suis pas sûr que l'on se comprenne bien. Je ne parle évidemment
pas du cas où il y a deux ou trois instructions « case » de suite pour
le même code, mais du cas où il y a une instruction « case », un peu de
code, puis une autre instruction « case » et la suite du code.

Ainsi, j'écris :

switch ($machin) {
case BIDULE:
$foo = 3;
break;

case CHOSE:
case TRUC:
$foo = 7;
/* fall through */

case CHOUETTE:
$bar = 0;
break;
}

Ici, le point important est qu'après avoir positionné $foo à 7 dans
les cas CHOSE et TRUC, on enchaîne sur $bar = 0, comme pour le cas
CHOUETTE. C'est là que je préviens que l'« oubli » du break est
volontaire. Bien évidemment, je ne mets pas de commentaire entre
« case CHOSE: » et « case MACHIN: ».


1 2