Les conditions

Résumé Support Quiz

Jusqu'ici on a créé des variables et stocké des valeurs, mais pour rendre nos scripts vraiment utiles, on a besoin d'y ajouter de la logique. C'est là qu'interviennent les conditions, qui permettent d'exécuter du code différent selon qu'une valeur remplit ou non certains critères. Pour aller plus loin, on pourra consulter la documentation officielle.

Le if / else

La syntaxe de base est le if / else. Prenons un exemple simple : on veut savoir si un élève a la moyenne.

$note = 12; if ($note > 10) { echo "Bravo, vous avez la moyenne."; } else { echo "Dommage, vous n'avez pas la moyenne."; }

Entre les parenthèses du if, on place une condition, c'est-à-dire une expression qui vaut true ou false. Si elle est vraie, le bloc entre les accolades est exécuté ; sinon, c'est le bloc du else.

Pour les comparaisons, on dispose des opérateurs classiques : > (strictement supérieur), >= (supérieur ou égal), < (strictement inférieur) et <= (inférieur ou égal).

Le else if

Lorsqu'on a besoin de tester plusieurs cas, on peut imbriquer des conditions, mais c'est vite illisible. La solution plus propre est le else if :

$note = readline("Entrez votre note : "); if ($note > 10) { echo "Bravo, vous avez au-dessus de la moyenne."; } else if ($note == 10) { echo "Vous avez juste la moyenne."; } else { echo "Dommage, vous n'avez pas la moyenne."; }

C'est une écriture plus "plate" qui reste facile à lire, même avec plusieurs cas à traiter.

Double égal vs triple égal

Pour tester une égalité, on utilise == (double égal). Attention à ne pas confondre avec = (simple égal) qui est une affectation; utilisé dans un if, il sera toujours évalué à true et c'est une source de bug classique chez les débutants.

// ❌ Assignement, toujours vrai if ($note = 10) { } // ✅ Comparaison de valeur if ($note == 10) { }

Il existe aussi le triple égal ===, qui vérifie en plus que les deux valeurs sont du même type. C'est une différence importante en PHP.

Quand l'utilisateur tape quelque chose avec readline(), c'est toujours une chaîne de caractères. Avec ==, PHP fait une conversion implicite et compare quand même les valeurs. Avec ===, la comparaison "10" === 10 est false parce que l'un est une chaîne et l'autre un entier.

$note = readline("Entrez votre note : "); var_dump($note == 10); // true (conversion implicite) var_dump($note === 10); // false (types différents)

De manière générale, on conseille de toujours utiliser === et de convertir explicitement les valeurs si nécessaire :

$note = (int) readline("Entrez votre note : "); if ($note === 10) { echo "Vous avez juste la moyenne."; }

En mettant le type entre parenthèses devant la valeur ((int), (float), (string)...), on force la conversion et on sait exactement avec quoi on travaille.

Le switch / case

Quand une variable peut prendre plusieurs valeurs discrètes et qu'on veut faire quelque chose de différent pour chacune, le switch est une syntaxe plus adaptée que de chaîner des else if.

$action = readline("Votre action (1: attaquer, 2: défendre, 3: passer) : "); switch ($action) { case 1: echo "J'attaque !"; break; case 2: echo "Je me défends."; break; case 3: echo "Je ne fais rien."; break; default: echo "Commande inconnue."; }

Quelques points importants :

  • Chaque cas se termine par un break. Sans lui, PHP continue d'exécuter les cas suivants, ce qui mène à des comportements inattendus.
  • Le default est l'équivalent du else : il est exécuté si aucun cas ne correspond.

On peut tout à fait remplacer un switch par une série de if / else if, les deux approches sont valides. Le switch est juste plus lisible quand on a beaucoup de cas à tester sur la même variable.

Les opérateurs logiques

Une condition peut combiner plusieurs tests grâce aux opérateurs logiques. En PHP :

  • && signifie ET : les deux conditions doivent être vraies.
  • || signifie OU : au moins une des conditions doit être vraie.

Exemple concret : on veut savoir si un magasin est ouvert, sachant qu'il ouvre de 9h à 12h et de 14h à 17h.

$heure = (int) readline("Entrez l'heure : "); if (($heure >= 9 && $heure < 12) || ($heure >= 14 && $heure < 17)) { echo "Le magasin est ouvert."; } else { echo "Le magasin est fermé."; }

Voici un rappel du comportement des opérateurs logiques :

A B A && B A \ \ B
vrai vrai vrai vrai
vrai faux faux vrai
faux vrai faux vrai
faux faux faux faux

Inverser une condition

Pour inverser une condition, on utilise le ! (point d'exclamation) :

$estOuvert = ($heure >= 9 && $heure < 12) || ($heure >= 14 && $heure < 17); if (!$estOuvert) { echo "Le magasin est fermé."; }

!true donne false, et !false donne true. C'est le moyen le plus simple d'inverser n'importe quelle condition.

Résumé

  • if / else if / else pour les conditions classiques.
  • switch / case quand on teste plusieurs valeurs possibles d'une même variable.
  • Toujours préférer === au == pour éviter les surprises liées à la conversion de types.
  • && pour le ET logique, || pour le OU logique.
  • ! pour inverser une condition.

On aura l'occasion de pratiquer tout ça dans le prochain chapitre avec les boucles, où on va construire des scripts plus poussés.