La structure Switch en PHP




  1. A quoi sert le switch ?

Le switch permet de remplacer une structure de "if" imbriqués. L'intérêt est de simplifier la lecture du code, mais d'un point de vue exécution, on n'y gagne pas forcement beaucoup.

Ainsi, grâce à une structure switch, vous pouvez comparer une valeur à plusieurs autres, et effectuer l'action qui y correspond. Cette structure s'appelle "switch" dans la majorité des langages, mais on peut également la trouver sous le nom "case" en Pascal par exemple.

Nous allons donc voir un exemple de switch.



  2. Switch (valeur) { case ... }



  2. 1. Exemple avec des chiffres

Prenons le cas d'une variable envoyée par un formulaire qui peut prendre les valeurs 1, 2, 3, 4 et 5. Cette valeur va être appelé "$Fid".

Si l'on veut afficher "Bonjour" pour le 1, "Buongiorno" pour le 2, "Ola" pour le 3, "Hi" pour le 4 et "Guttentag" pour le 5. Voici comment on peut traduire ceci en PHP :
<?php
switch ($Fid) {
  case 1:
    echo "Bonjour";
    break;
  case 2:
    echo "Buongiorno";
    break;
  case 3:
    echo "Ola";
    break;
  case 4:
    echo "Hi";
    break;
  case 5:
    echo "Guttentag";
    break;
}
?>

Si, par exemple, la valeur de $Fid est 2, voila ce qui sera affiché : Buongiorno
Par contre, n'oubliez pas de mettre le "break" après chaque test. Pour savoir pourquoi, allez dans le bas de la page à la partie "les subtilités"...



  2. 2. Exemple avec des Chaînes

Prenons le cas inverse maintenant, à partir de "Bonjour" on veut 1, "Buongiorno" on veut 2, "Ola" on veut 3, "Hi" on veut 4 et "Gottentag" on veut 5. Voici comment on peut traduire ceci en PHP :
<?php
switch ($Fid) {
  case "Bonjour":
    echo 1;
    break;
  case "Buongiorno":
    echo 2;
    break;
  case "Ola":
    echo 3;
    break;
  case "Hi":
    echo 4;
    break;
  case "Guttentag":
    echo 5;
    break;
}
?>
Dans ce cas, si $Fid vaut "Ola", voila ce qui sera affiché : 3

  3. Switch (valeur) { case ... default ... }

Dans les exemples vu précédemment, on avait fixé une valeur pour une valeur entrée. Si ce n'était pas l'une des valeurs précisée, alors il ne se passait rien. On peut également avoir envie de définir une valeur par défaut. Dans ce cas, il suffit d'ajouter la condition "default". Cette condition est toujours vraie, c'est la dernière à être exécutée :
<?php
switch ($Fid) {
  case 1:
    echo "Bonjour";
    break;
  case 2:
    echo "Buongiorno";
    break;
  case 3:
    echo "Ola";
    break;
  case 4:
    echo "Hi";
    break;
  case 5:
    echo "Guttentag";
    break;
  default:
    echo "Salut";
    break;
}
?>
Dans ce cas, si "$Fid" vaut 18, il sera affiché : Salut


  4. Les subtilités



  4. 1. Le 'break'

Le "break" est très important, et peut parfois servir d'astuces. En effet, le "break" permet de signifier qu'il faut se rendre à la fin de la structure if, sinon, tout le reste est exécuté. Donc, si l'on reprend le premier cas (avec "2" on affiche "Buogiorno"), si le code est le suivant :
<?php
switch ($Fid) {
  case 1:
    echo "Bonjour";
  case 2:
    echo "Buongiorno";
  case 3:
    echo "Ola";
  case 4:
    echo "Hi";
  case 5:
    echo "Guttentag";
}
?>

voila ce qu'il sera écrit : BuongiornoOlaHiGuttentag.

En effet, dès qu'une des conditions est vraie, toutes les suivantes le sont aussi !





Page modifiée le : 24/07/2003
Site modifié le : 14/09/2020


Valid XHTML 1.0 Transitional