switch
va nous permettre d’exécuter un code en fonction de la valeur d’une variable. On va pouvoir gérer autant de situations ou de « cas » que l’on souhaite.
En cela, l’instruction switch
représente une alternative à l’utilisation d’un if…elseif…else
mais qui est plus limitante puisque le switch
ne va gérer que l’égalité comme type de comparaison.
En dehors de cela, on va pouvoir utiliser un switch
ou une condition « classique » de manière équivalente en PHP. Il n’y a donc pas de réel intérêt à utiliser le switch
plutôt qu’un if…elseif…else
.
Cependant, dans certains cas, utiliser un switch
peut rendre le code plus clair et légèrement plus rapide dans son exécution.
La syntaxe d’une instruction switch
va être différente de celle des conditions vues jusqu’ici. Regardez plutôt l’exemple ci-dessous :
<!DOCTYPE html> <html> <head> <title>Cours PHP & MySQL</title> <meta charset="utf-8"> <link rel="stylesheet" href="cours.css"> </head> <body> <h1>Titre principal</h1> <?php $x = 2; switch($x){ case 0: echo '$x stocke la valeur 0'; break; case 1: echo '$x stocke la valeur 1'; break; case 2: echo '$x stocke la valeur 2'; break; case 3: echo '$x stocke la valeur 3'; break; case 4: echo '$x stocke la valeur 4'; break; default: echo '$x ne stocke pas de valeur entre 0 et 4'; } ?> <p>Un paragraphe</p> </body> </html>
La première chose à noter ici est qu’on doit fournir une variable sur laquelle on va « switcher ».
Ensuite, l’instruction switch
va s’articuler autour de case
qui sont des cas. Si la valeur de notre variable est égale à celle du case
, alors on exécute le code qui est à l’intérieur.
Par exemple, le code contenu dans case 0:
va être exécuté si la valeur contenue dans notre variable est 0, le code contenu dans case 1:
va être exécuté si la valeur contenue dans notre variable est 1, etc.
Chaque case
d’un switch
doit se terminer par une instruction break
. Cette instruction indique au PHP qu’il doit sortir du switch
.
Sans break
, le PHP continuerait à tester les différents autres case
du switch
même si un case
égal à la valeur de la variable a été trouvé, ce qui ralentirait inutilement le code et pourrait produire des comportements non voulus.
Enfin, à la fin de chaque switch
, il convient d’indiquer une instruction default
. Le default
est l’équivalent du else
des conditions vues précédemment : il sert à gérer tous les autres cas et son code ne sera exécuté que si aucun case
ne correspond à la valeur de la variable.
Pas la peine d’utiliser une instruction break
au sein de default
puisque default
sera toujours placée en fin de switch
. Si le PHP arrive jusqu’au default
, alors il sortira ensuite naturellement du switch
puisque celui-ci ne contient plus aucun code après default
.
Encore une fois, le switch
ne présente pas en PHP de réel intérêt par rapport à l’utilisation d’une condition classique en dehors du fait qu’utiliser un switch
peut dans certains cas réduire le temps d’exécution d’un script et que cette structure est parfois plus claire qu’un if…elseif…else
contenant des dizaines de elseif
.
Pour le moment, je vous conseille tout de même de vous entrainer avec tous les outils que je vous présente. Vous pourrez par la suite décider de ne pas utiliser ceci ou cela, mais pour le moment il est essentiel que vous ayez une vue d’ensemble des fonctionnalités de base proposées par PHP.