Manuel PHP

Table des matières

Préface
I. Au moment de commencer
II. Installation et configuration
III. Référence du langage
IV. Sécurité
V. Caractéristiques
VI. Référence des fonctions
VII. PHP et le moteur interne Zend
VIII. FAQ : foire Aux Questions
IX. Annexes
Remerciements



"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”.

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 16-23. 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 16-24. 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 16-25. 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 16-26. 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 16-27. 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 16-28. 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;
?>

Travail collaboratif

Contribuez, en ajjoutant des elements a cette page de manuel :

Merci de votre aide
L’equipe Php.fr

 


Index | Afficher le texte source | Anciennes révisions | Derniers changements | Connexion
©2007 Wiki Copyright