L'instruction
switch équivaut à une
série d'instructions if.
En de nombreuses occasions, vous aurez
besoin de comparer la même variable
(ou expression) avec un grand nombre
de valeurs différentes, et
d'exécuter différentes
parties de code suivant la valeur
à laquelle elle est égale.
C'est exactement à cela que
sert l'instruction switch.
Note : Notez que contrairement à
d'autres langages, la structure continue
s'applique aux structures switch et
se comporte de la même manière
que 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.
Les deux exemples suivants sont deux
manières différentes
d'écrire la même chose,
l'une en utilisant une séries
de if, et l'autre en utilisant l'instruction
switch :
Exemple - Instruction switch
<?php
if ($i == 0) {
echo "i égale 0";
} elseif ($i == 1) {
echo "i égale 1";
} elseif ($i == 2) {
echo "i égale 2";
}
switch ($i) {
case 0:
echo "i égale 0";
break;
case 1:
echo "i égale 1";
break;
case 2:
echo "i égale 2";
break;
}
?>
Exemple - Instruction switch
utilisant une chaîne de caractères
<?php
switch ($i) {
case "tarte":
echo "i est une tarte";
break;
case "barre":
echo "i est une barre";
break;
case "gateau":
echo "i est un gateau";
break;
}
?>
Il est important de comprendre que
l'instruction switch exécute
chacune des clauses dans l'ordre.
L'instruction switch est exécutée
ligne par ligne. Au début,
aucun code n'est exécuté.
Seulement lorsqu'un case est vérifié,
PHP exécute alors les instructions
correspondantes. PHP continue d'exécuter
les instructions jusqu'à la
fin du bloc d'instructions du switch,
ou bien dès qu'il trouve l'instruction
break. Si vous ne pouvez pas utiliser
l'instruction break à la fin
de l'instruction case, PHP continuera
à exécuter toutes les
instructions qui suivent. Par exemple
:
Exemple - Instruction switch
et fall through
<?php
switch ($i) {
case 0 :
echo "i égale 0";
case 1 :
echo "i égale 1";
case 2 :
echo "i égale 2";
}
?>
Dans cet exemple, si $i est égal
à 0, PHP va exécuter
quand même toutes les instructions
qui suivent! Si $i est égal
à 1, PHP exécutera les
deux dernières instructions.
Et seulement si $i est égal
à 2, vous obtiendrez le résultat
escompté, c'est-à-dire,
l'affiche de "i égal 2".
Donc, l'important est de ne pas oublier
l'instruction break (même s'il
est possible que vous l'omettiez dans
certaines circonstances).
Dans une commande switch, une condition
n'est évaluée qu'une
fois, et le résultat est comparé
à chaque case. Dans une structure
elseif, les conditions sont évaluées
à chaque comparaison. Si votre
condition est plus compliquée
qu'une simple comparaison, ou bien
fait partie d'une boucle, switch sera
plus rapide.
La liste de commandes d'un case peut
être vide, auquel cas PHP utilisera
la liste de commandes du cas suivant.
Exemple - Instruction switch
et cas vide
<?php
switch ($i) {
case 0:
case 1:
case 2:
echo "i est plus petit que 3
mais n'est pas négatif";
break;
case 3 :
echo "i égale 3";
}
?>
Un case spécial est default.
Ce cas est utilisé lorsque
tous les case ont échoués.
Il doit être le dernier cas
listé. Par exemple :
Exemple - Instruction switch
et default
<?php
switch ($i) {
case 0:
echo "i égale 0";
break;
case 1:
echo "i égale 1";
break;
case 2:
echo "i égale 2";
break;
default:
echo "i n'est ni égal
à 2, ni à 1, ni à
0.";
}
?>
Une autre chose à mentionner
est que la valeur du case peut être
toute expression de type scalaire,
c'est-à-dire nombre entier,
nombre à virgule flottante
et chaîne de caractères.
Les tableaux sont sans intérêt
dans ce contexte-là.
La syntaxe alternative pour cette
structure de contrôle est la
suivante : pour plus d'informations,
voir syntaxes alternatives).
Exemple - Instruction switch
alternative
<?php
switch ($i):
case 0:
echo "i égale 0";
break;
case 1:
echo "i égale 1";
break;
case 2:
echo "i égale 2";
break;
default:
echo "i n'est ni égal
à 2, ni à 1, ni à
0";
endswitch;
?>
Copyright © 2001-2006 The
PHP Group. All rights reserved.
|