|
"switch"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”.
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” :
<?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; } ?>
<?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 :
<?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.
<?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 :
<?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).
<?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; ?> Travail collaboratifContribuez, en ajjoutant des elements a cette page de manuel : Merci de votre aide |