0 XP
?
PHP : de zéro à la maîtrise/Conditions et boucles
Débutant45 min30 XP

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 : elseif s'écrit en un seul mot en PHP (pas else if comme en JS, bien que ça marche aussi).

Comparateurs

ComparateurSignificationExemple
==Égalité souple"5" == 5true
===Égalité stricte"5" === 5false
!=Différent (souple)"5" != 5false
!==Différent (strict)"5" !== 5true
>Supérieur à10 > 5true
<Inférieur à3 < 7true
>=Supérieur ou égal5 >= 5true
<=Inférieur ou égal4 <= 3false

⚠️ Piège : En PHP, 0 == "foo" est true ! 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 break sinon 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

ConceptJavaScriptPHP
Conditionif (x > 5) {}if ($x > 5) {}
Ternairex > 5 ? "oui" : "non"$x > 5 ? "oui" : "non"
Switchswitch(x) { case 5: }switch($x) { case 5: }
Null checkx ?? "defaut"$x ?? "defaut"

Exercice pratique

Crée un script qui :

  1. Déclare un score de 0 à 100
  2. Affiche la note selon l'échelle : A (90-100), B (80-89), C (70-79), D (60-69), F (<60)
  3. 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. Le match (PHP 8+) est souvent préférable au switch pour sa clarté et sa stricte.


Prochaine leçon : Les fonctions en PHP — organise ton code !

⚡ Simulateur — Conditions et boucles

Étape 1/6
📝 Pseudo-code
1<?php
2$note = 15;
3if ($note >= 16) {
4 $mention = "Très bien";
5} elseif ($note >= 14) {
6 $mention = "Bien";
7} else {
8 $mention = "Passable";
9}
10echo $mention;
11?>
⚙️ Exécution
📦 Mémoire
Aucune variable
🔀 Flux d'exécution
<?php
3
Début du script

Ouverture du bloc PHP.