• HOME
  • HTML
  • CSS
  • PHP
    • Début d'une page - Variable
    • Afficher et Concaténer des variables
    • Symboles à connaître
    • Conditions: IF, ELSE, ELSEIF
    • Conditions AND, OR
    • Conditions SWITCH
    • Boucles WHILE, FOR
    • Les tableaux / EN COUR ...
    • Les fonctions / Bientôt ...
  • SQL
    • Installer MYSQL
    • Interroger une base de données
    • Requete SQL / prochainement
    • PhpMyadmin serveur / prochainement
  • RÉSEAU
    • Afficher le mot de passe wifi
    • Le model OSI
    • Cisco Packet Tracer
    • WINDOWS 10 : LA DÉCOUVERTE DU RÉSEAU NE FONCTIONNE PAS
  • LINUX
    • Mettre à jour linux
    • Commandes Linux
    • permissions
    • Installer nginx (Serveur Web)
    • Installer Composer 2
    • Installer Symfony
    • Installer Mysql sur Ubuntu
    • VIM + liste commande
    • Installer Prestashop
    • Odoo / prochainement
    • Sécuriser un site avec HTTPS (Cerbot)
    • Android Téléphone Virtuel
    • Espace d'échange (swap)
    • Raspberry Pi : Authentification SSH par certificat
    • Ubuntu Software
  • WINDOWS
    • Créer une clé USB multiboot / prochainement
    • WSL2
    • WSL2 accéder aux fichiers Linux depuis Windows
    • WSL2 Sauvegarder et restaurer vos distrib Linux
    • Mot de passe Windows perdu
    • Effacer totalement un disque dur ou un SSD
    • Sauvegarder / Restaurer les drivers Windows
    • VMware Workstation / prochainement
    • Comment activer le bac à sable dans Windows 11 / prochainement
  • RASPBERRY
    • Créez une carte SD Raspbian pour votre Raspberry Pi depuis Windows
    • Premier démarrage
    • Mettre à jour son Raspberry
    • Mettre à Jour Raspberry Pi OS
    • Voir le réseau raspberry depuis Windows
    • Se connecter au bureau de son Raspberry depuis un PC Windows
    • Ouvrir les ports
    • SSH
    • Faire un NAS
    • Transmission
    • HTML - PHP - MYSQL - PHP ADMIN / Bientôt ...
    • Plusieurs sites Web à partir d'un seul et même serveur
    • Plex seveur multimédia
    • Recalbox / Kodi pour raspberrypi 3b+ / Bientôt
    • Mettre tout le système sur disque dur USB ou SSD
    • Installer Spotify
  • DIVERS
    • Programme
    • Ebook
    • Formation
    • LIENS

Condition SWITCH

Un autre type de condition bien pratique : switch

En théorie, les structures à base de if… elseif… else que je viens de vous montrer suffisent pour traiter n'importe quelle condition.

Pourquoi se compliquer la vie avec une autre structure ?

Pour vous faire comprendre l'intérêt de switch, je vais vous donner un exemple un peu lourd avec les if et elseif que vous venez d'apprendre

Exemple

<?php
$note = 16;

if ($note == 0)
{
    echo "Tu es vraiment un gros nul !!!";
}

elseif ($note == 5)
{
    echo "Tu es très mauvais";
}

elseif ($note == 7)
{
    echo "Tu es mauvais";
}

elseif ($note == 10)
{
    echo "Tu as pile poil la moyenne, c'est un peu juste…";
}

elseif ($note == 12)
{
    echo "Tu es assez bon";
}

elseif ($note == 16)
{
    echo "Tu te débrouilles très bien !";
}

elseif ($note == 20)
{
    echo "Excellent travail, c'est parfait !";
}

else
{
    echo "Désolé, je n'ai pas de message à afficher pour cette note";
}
?>
Comme vous le voyez, c'est lourd, long, et répétitif.

Dans ce cas, on peut utiliser une autre structure plus souple : c'est switch.

Même exemple avec switch

<?php
$note = 10;

switch ($note) // on indique sur quelle variable on travaille
{
    case 0: // dans le cas où $note vaut 0
        echo "Tu es vraiment un gros nul !!!";
    break;

    case 5: // dans le cas où $note vaut 5
        echo "Tu es très mauvais";
    break;

    case 7: // dans le cas où $note vaut 7
        echo "Tu es mauvais";
    break;

    case 10: // etc. etc.
        echo "Tu as pile poil la moyenne, c'est un peu juste…";
    break;

    case 12:
        echo "Tu es assez bon";
    break;

    case 16:
        echo "Tu te débrouilles très bien !";
    break;

    case 20:
        echo "Excellent travail, c'est parfait !";
    break;

    default:
        echo "Désolé, je n'ai pas de message à afficher pour cette note";
}
?>
Tout d'abord, il y a beaucoup moins d'accolades (elles marquent seulement le début et la fin du switch).

Avantage : on n'a plus besoin de mettre le double égal ! Défaut : ça ne marche pas avec les autres symboles (< > <= >= !=). En clair, le switch ne peut tester que l'égalité.

Important

Supposons dans notre exemple que la note soit de 10. PHP va lire :case 0 ? Non. Je saute.case 5 ? Non plus. Je saute.case 7 ? Non plus. Je saute.case 10 ? Oui, j'exécute les instructions.

Mais contrairement aux elseif, PHP ne s'arrête pas là et continue à lire les instructions des case qui suivent !case 12,case 16, etc. Pour empêcher cela, utilisez l'instruction break;.


L'instruction break demande à PHP de sortir du switch. Dès que PHP tombe sur break, il sort des accolades et donc il ne lit pas les case qui suivent.

En pratique, on utilise très souvent un break car sinon, PHP lit des instructions qui suivent et qui ne conviennent pas.

Essayez d'enlever les break dans le code précédent, vous allez comprendre pourquoi ils sont indispensables !

Quand doit-on choisir if, et quand doit-on choisir switch ?

C'est surtout un problème de présentation et de clarté.

Pour une condition simple et courte, on utilise le if, et quand on a une série de conditions à analyser, on préfère utiliser switch pour rendre le code plus clair.