Objectifs de cette leçon
- Utiliser if/elseif/else
- Maîtriser switch/case
- Créer des boucles for, while et foreach
Conditions en PHP 🔀
Les conditions permettent de prendre des decisions dans ton code. PHP offre plusieurs structures conditionnelles : if/elseif/else, switch, et l'opérateur ternaire.
Les blocs if / elseif / else
<?php $age = 18; if ($age >= 18) { echo "Tu es majeur !"; } elseif ($age >= 16) { echo "Tu es presque majeur."; } else { echo "Tu es mineur."; } ?>
💡 Astuce :
elseifs'écrit en un seul mot en PHP (paselse ifcomme en JS, bien que ça marche aussi).
Comparateurs
| Comparateur | Signification | Exemple |
|---|---|---|
== | Égalité souple | "5" == 5 → true |
=== | Égalité stricte | "5" === 5 → false |
!= | Différent (souple) | "5" != 5 → false |
!== | Différent (strict) | "5" !== 5 → true |
> | Supérieur à | 10 > 5 → true |
< | Inférieur à | 3 < 7 → true |
>= | Supérieur ou égal | 5 >= 5 → true |
<= | Inférieur ou égal | 4 <= 3 → false |
⚠️ Piège : En PHP,
0 == "foo"esttrue! Toujours utiliser===pour éviter ces comportements surprenants.
L'opérateur ternaire
<?php $age = 20; $statut = ($age >= 18) ? "majeur" : "mineur"; echo $statut; // majeur // Version avec null coalescent (PHP 7+) $prenom = $_GET['prenom'] ?? "Anonyme"; // Équivaut à : // $prenom = isset($_GET['prenom']) ? $_GET['prenom'] : "Anonyme"; ?>
💡 Le null coalescent
??est extremely utile pour éviter les erreurs "Undefined index".
Le switch
<?php $jour = date("N"); // 1=lundi, 7=dimanche switch ($jour) { case 1: echo "Lundi — retour au travail !"; break; case 2: case 3: case 4: case 5: echo "Jour de semaine — en avant !"; break; case 6: echo "Samedi — detente !"; break; case 7: echo "Dimanche — repos !"; break; default: echo "Jour inconnu"; } ?>
⚠️ Important : N'oublie JAMAIS le
breaksinon PHP exécute tous les cas suivants !
Switch moderne (PHP 8+ : match)
<?php // match est plus strict que switch // Il utilise la comparaison stricte (===) par défaut $resultat = match($jour) { 1 => "Lundi", 2, 3, 4, 5 => "Jour de semaine", 6 => "Samedi", 7 => "Dimanche", default => "Inconnu" }; echo $resultat; ?>
Les opérateurs logiques
<?php $age = 25; $salaire = 3000; // ET logique (&&) if ($age >= 18 && $salaire >= 2000) { echo "Tu remplis les deux conditions"; } // OU logique (||) if ($age < 18 || $salaire < 1000) { echo "Au moins une condition est vraie"; } // NON logique (!) if (!($age >= 18)) { echo "Tu es mineur"; } // Opérateur spaceship (PHP 7+) // Retourne -1, 0 ou 1 echo 5 <=> 3; // 1 echo 5 <=> 5; // 0 echo 5 <=> 7; // -1 ?>
Conditions imbriquées
<?php $age = 25; $diplome = true; $experience = 3; if ($age >= 18) { if ($diplome) { if ($experience >= 2) { echo "Profil idéal — embauche !"; } else { echo "Bon profil — en formation ?"; } } else { echo "Diplôme nécessaire pour ce poste."; } } else { echo "Candidature impossible — trop jeune."; } ?>
💡 Conseil : Évite les conditions imbriquées trop profondes. Utilise des fonctions ou des early returns.
Comparaison avec JavaScript
| Concept | JavaScript | PHP |
|---|---|---|
| Condition | if (x > 5) {} | if ($x > 5) {} |
| Ternaire | x > 5 ? "oui" : "non" | $x > 5 ? "oui" : "non" |
| Switch | switch(x) { case 5: } | switch($x) { case 5: } |
| Null check | x ?? "defaut" | $x ?? "defaut" |
Exercice pratique
Crée un script qui :
- Déclare un score de 0 à 100
- Affiche la note selon l'échelle : A (90-100), B (80-89), C (70-79), D (60-69), F (<60)
- Utilise switch, if/elseif, et ternaire pour faire la même chose 3 façons
<?php $score = 85; // Avec if/elseif if ($score >= 90) $note1 = "A"; elseif ($score >= 80) $note1 = "B"; elseif ($score >= 70) $note1 = "C"; elseif ($score >= 60) $note1 = "D"; else $note1 = "F"; // Avec ternaire $note2 = ($score >= 90) ? "A" : (($score >= 80) ? "B" : (($score >= 70) ? "C" : (($score >= 60) ? "D" : "F"))); // Avec match (PHP 8+) $plage = intdiv($score, 10); $note3 = match(true) { $score >= 90 => "A", $score >= 80 => "B", $score >= 70 => "C", $score >= 60 => "D", default => "F" }; echo "if/elseif: $note1, ternaire: $note2, match: $note3"; ?>
🎯 A retenir : Toujours utiliser
===pour la comparaison stricte. Lematch(PHP 8+) est souvent préférable auswitchpour sa clarté et sa stricte.
Prochaine leçon : Les fonctions en PHP — organise ton code !
⚡ Simulateur — Conditions et boucles
Étape 1/6Ouverture du bloc PHP.