Semaine 1 - Jour 4 : Structures Conditionnelles

Prendre des Décisions dans le Code

Les structures conditionnelles permettent d'exécuter du code selon qu'une condition est vraie ou fausse. Elles sont essentielles pour rendre votre programme intelligent et réactif.

Les structures principales :
if/else/elseif : conditions simples ou multiples
switch/case : choix multiples sur une même variable
Opérateur ternaire : condition sur une ligne
match : nouvelle syntaxe PHP 8+ (plus stricte que switch)

1. if / else / elseif

La structure de base pour tester une condition :

<?php
$age = 20;

// if simple
if ($age >= 18) {
    echo "Vous êtes majeur";
}

// if...else
if ($age >= 18) {
    echo "Majeur";
} else {
    echo "Mineur";
}

// if...elseif...else
if ($age < 13) {
    echo "Enfant";
} elseif ($age < 18) {
    echo "Adolescent";
} else {
    echo "Adulte";
}
?>
Résultat :
Vous êtes majeur
Majeur
Adulte

2. switch / case

Comparer une variable à plusieurs valeurs :

<?php
$jour = "mardi";

switch ($jour) {
    case "lundi":
        echo "Début de semaine";
        break;

    case "mardi":
    case "mercredi":
    case "jeudi":
        echo "Milieu de semaine";
        break;

    case "vendredi":
        echo "Presque le weekend !";
        break;

    default:
        echo "Weekend !";
}
?>
Résultat :
Milieu de semaine
Important : N'oubliez pas le break; sinon le code continue dans les case suivants (fall-through) !

3. Opérateur Ternaire

Condition courte sur une seule ligne :

<?php
// Syntaxe : condition ? valeur_si_vrai : valeur_si_faux

$age = 25;
$statut = ($age >= 18) ? "Majeur" : "Mineur";
echo $statut; // Majeur

// Équivalent à :
if ($age >= 18) {
    $statut = "Majeur";
} else {
    $statut = "Mineur";
}

// Ternaire imbriqué (éviter si possible)
$note = 14;
$mention = ($note >= 16) ? "TB" :
            (($note >= 14) ? "B" :
            (($note >= 12) ? "AB" : "Passable"));
echo $mention; // B
?>
Résultat :
Majeur
B

4. match (PHP 8+)

Alternative moderne et stricte à switch :

<?php
$statut = 404;

// match retourne une valeur directement
$message = match ($statut) {
    200 => "OK",
    404 => "Page non trouvée",
    500 => "Erreur serveur",
    default => "Statut inconnu"
};
echo $message; // Page non trouvée

// Multiples valeurs
$jour = 3;
$type = match ($jour) {
    1, 2, 3, 4, 5 => "Semaine",
    6, 7 => "Weekend",
};
echo $type; // Semaine
?>
Résultat :
Page non trouvée
Semaine
Différences match vs switch :
• match utilise === (strict), switch utilise ==
• match retourne directement une valeur
• Pas besoin de break dans match
• match lève une erreur si aucun cas ne correspond (sans default)

Exemples Pratiques

<?php
// Exemple 1 : Système de notes
$note = 15;

if ($note >= 16) {
    $mention = "Très bien";
    $couleur = "gold";
} elseif ($note >= 14) {
    $mention = "Bien";
    $couleur = "green";
} elseif ($note >= 12) {
    $mention = "Assez bien";
    $couleur = "blue";
} elseif ($note >= 10) {
    $mention = "Passable";
    $couleur = "orange";
} else {
    $mention = "Insuffisant";
    $couleur = "red";
}

echo "<p style='color: " . $couleur . "'>";
echo "Note : " . $note . "/20 - " . $mention;
echo "</p>";

// Exemple 2 : Menu de navigation
$page = "contact";

switch ($page) {
    case "accueil":
        $titre = "Bienvenue";
        $contenu = "Page d'accueil";
        break;
    case "contact":
        $titre = "Nous contacter";
        $contenu = "Formulaire de contact";
        break;
    case "about":
        $titre = "À propos";
        $contenu = "Qui sommes-nous ?";
        break;
    default:
        $titre = "Erreur 404";
        $contenu = "Page non trouvée";
}

echo "<h1>" . $titre . "</h1>";
echo "<p>" . $contenu . "</p>";
?>
Résultat attendu :
Note : 15/20 - Bien
Nous contacter
Formulaire de contact

Erreurs Courantes

// ❌ ERREUR : Oublier les accolades avec plusieurs instructions
if ($age >= 18)
    echo "Majeur";
    echo "Bienvenue"; // Toujours exécuté !

// ✅ CORRECT : Utilisez des accolades
if ($age >= 18) {
    echo "Majeur";
    echo "Bienvenue";
}

// ❌ ERREUR : Oublier break dans switch
switch ($jour) {
    case "lundi":
        echo "Lundi";
    case "mardi": // Aussi exécuté si $jour = "lundi" !
        echo "Mardi";
}

// ✅ CORRECT
switch ($jour) {
    case "lundi":
        echo "Lundi";
        break;
    case "mardi":
        echo "Mardi";
        break;
}
Froggiesplaining :


Objectifs de ce cours :
✅ Maîtriser if, else et elseif pour des conditions multiples
✅ Utiliser switch/case pour comparer une variable à plusieurs valeurs
✅ Comprendre et utiliser l'opérateur ternaire pour des conditions simples
✅ Découvrir match (PHP 8+) comme alternative moderne à switch

Points clés à retenir :
if/else : pour des conditions simples ou complexes
elseif : pour tester plusieurs conditions séquentiellement
switch : pratique quand on compare UNE variable à plusieurs valeurs
• N'oubliez JAMAIS le break; dans switch (sauf si volontaire)
Opérateur ternaire : condition ? vrai : faux (pour conditions simples)
match (PHP 8+) : plus strict (===), retourne une valeur, pas de break
• Utilisez toujours des accolades {} même pour une seule instruction (bonne pratique)
default dans switch/match : cas par défaut si aucun ne correspond

Exercice pratique :
1. Créez un fichier conditions.php
2. Demandez l'âge : $age = 16;
3. Affichez "Enfant" (0-12), "Ado" (13-17), "Adulte" (18+) avec if/elseif/else
4. Créez une variable $jour = "mercredi";
5. Utilisez switch pour afficher un message selon le jour de la semaine
6. Testez l'opérateur ternaire : $message = ($age >= 18) ? "Accès autorisé" : "Accès refusé";
7. (Bonus PHP 8+) Testez match avec un code HTTP : 200, 404, 500

Froggie explain

GitHub - eCrea