Leçons PHP - leçon 8-2 - L’opérateur switch
Dans la leçon précédente, nous avons découvert l’opérateur if. L’opérateur if permet de vérifier la vérité d’une condition et d’exécuter les actions nécessaires selon le résultat.
Imaginons maintenant qu’il faille effectuer dix vérifications et, selon le résultat, réaliser l’une des dix actions. Bien sûr, on peut écrire cela avec if :
<?php if($x == 1){ // actions } if($x == 2){ // actions } if($x == 3){ // actions } if($x == 4){ // actions } if($x == 5){ // actions } if($x == 6){ // actions } if($x == 7){ // actions } if($x == 8){ // actions } if($x == 9){ // actions } if($x == 10){ // actions } ?>
Cette méthode fonctionne, mais il est préférable d’écrire ce genre de vérifications avec l’opérateur SWITCH.
PHP switch
L’opérateur switch permet de vérifier la valeur d’une expression selon plusieurs cas. Reprenons l’exemple précédent en utilisant switch :
<?php switch ($x){ case 1: // actions break; case 2: // actions break; case 3: // actions break; case 4: // actions break; case 5: // actions break; case 6: // actions break; case 7: // actions break; case 8: // actions break; case 9: // actions break; case 10: // actions break; default: // actions si aucune des conditions précédentes n’est remplie } ?>
Comme je l’ai dit, les deux exemples fonctionnent de la même façon, sauf que dans switch j’ai ajouté default, qui s’exécute si $x n’est pas entre 1 et 10.
Décomposons la construction switch. On commence par l’opérateur switch, suivi entre parenthèses de l’expression à tester. Cette expression peut être une variable de type texte ou numérique, donc un nombre ou une chaîne, par exemple :
<?php switch ($x){ case 'Hello': break; case 'Bye': break; } ?>
Après l’expression à tester, on met des accolades. Dans celles-ci, on écrit les valeurs possibles et les actions à effectuer.
<?php switch ($x){ case 'Hello': // valeur possible print $x; // actions break; // fin de l’exécution switch case 2: $x++; break; } ?>
Chaque valeur testée est précédée de case, la valeur est entre guillemets si c’est une chaîne, sinon telle quelle si c’est un nombre. Après la valeur, on met deux points.
Ensuite, on écrit les actions à faire si le cas est vrai. À la fin de chaque case, on met break; pour terminer le switch.
Après tous les case, on peut utiliser default, qui s’exécute si aucun case ne correspond ou si on a oublié un break; et que l’exécution continue. Deux remarques :
1. N’oubliez pas de mettre break; après chaque case.
2. On peut omettre break; après default car c’est la dernière instruction.
Voici le schéma bloc de switch :
Pour expliquer, on calcule le reste de la division du nombre D par 7, qui correspond au nombre de jours depuis le début de la semaine, soit le jour actuel :
<?php // $D nombre de jours depuis lundi $x = $D % 7; switch ($x){ case 1: print 'lundi'; break; case 2: print 'mardi'; break; case 3: print 'mercredi'; break; case 4: print 'jeudi'; break; case 5: print 'vendredi'; break; case 6: print 'samedi'; break; case 7: print 'dimanche'; break; } ?>