0Pricing
PHP Academy · Leçon

Instructions switch et match

Utilisez switch et match de PHP 8 pour gérer une logique à plusieurs branches.

Instructions switch et match est une leçon PHP Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage PHP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours PHP Academy comprend 4 leçons au total.

Chaînes de switch ou de if

Lorsque plusieurs embranchements dépendent de la valeur d'une seule variable, switch est plus lisible qu'une longue chaîne de if/elseif.

PHP 8 a introduit match comme alternative moderne et stricte.

Principes de base de switch

Switch évalue son expression une seule fois, puis exécute le bloc du case correspondant :

<?php
$day = 'Monday';

switch ($day) {
    case 'Monday':
        echo 'Start of work week';
        break;
    case 'Friday':
        echo 'Almost weekend';
        break;
    default:
        echo 'Midweek';
}

Comportement de passage automatique

Sans break, l'exécution passe automatiquement au case suivant — une technique pratique pour regrouper des cas :

<?php
$status = 2;

switch ($status) {
    case 1:
    case 2:
    case 3:
        echo 'In progress';  // runs for 1, 2, or 3
        break;
    case 4:
        echo 'Done';
        break;
}

Switch utilise une comparaison non stricte

Switch utilise == (comparaison non stricte) en interne — cela peut entraîner des correspondances surprenantes :

<?php
$val = 0;

switch ($val) {
    case 'foo':   // 0 == 'foo' in PHP 7!
        echo 'match foo';
        break;
    case 0:
        echo 'match zero';  // PHP 8 fixes this
        break;
}
// PHP 8: match zero (fixed)
// PHP 7: match foo (bug!)

Expression match de PHP 8

match ressemble à switch, mais utilise une comparaison stricte, renvoie une valeur et ne nécessite aucun break :

<?php
$status = 'active';

$label = match($status) {
    'active'   => 'Currently active',
    'inactive' => 'Not active',
    'pending'  => 'Awaiting activation',
    default    => 'Unknown status',
};

echo $label; // Currently active

match sans correspondance

Si aucune branche ne correspond dans match et qu'il n'y a pas de default, une exception UnhandledMatchError est levée :

<?php
$code = 99;

try {
    $result = match($code) {
        200 => 'OK',
        404 => 'Not Found',
        500 => 'Server Error',
        // no default!
    };
} catch (\UnhandledMatchError $e) {
    echo 'Unhandled match value: ' . $code;
}

match avec plusieurs conditions

Une seule branche de match peut contenir plusieurs valeurs séparées par des virgules :

<?php
$lang = 'tr';

$region = match($lang) {
    'en', 'en-US', 'en-GB' => 'English',
    'tr', 'az'             => 'Turkic',
    'fr', 'be', 'ca'       => 'French-speaking',
    default                => 'Other',
};

echo $region; // Turkic

match avec des expressions complexes

Les branches de match peuvent utiliser des expressions arbitraires à droite :

<?php
$score = 85;

$grade = match(true) {
    $score >= 90 => 'A',
    $score >= 80 => 'B',  // matches
    $score >= 70 => 'C',
    default      => 'F',
};

echo $grade; // B

return depuis match

Comme match est une expression, vous pouvez l'utiliser partout où une valeur est attendue :

<?php
function getHttpMessage(int $code): string {
    return match($code) {
        200 => 'OK',
        201 => 'Created',
        400 => 'Bad Request',
        401 => 'Unauthorized',
        404 => 'Not Found',
        default => 'Unknown',
    };
}

echo getHttpMessage(404); // Not Found

switch dans un contexte de return

Switch peut être utilisé dans une fonction pour renvoyer différentes valeurs, mais match est plus lisible :

<?php
function describe(int $n): string {
    switch (true) {
        case $n < 0:  return 'negative';
        case $n === 0: return 'zero';
        default:       return 'positive';
    }
}

echo describe(-5);  // negative
echo describe(0);   // zero
echo describe(7);   // positive

Quand utiliser switch ou match

Voici quelques recommandations :

  • Utilisez match lorsque vous avez besoin d'une comparaison stricte et d'une valeur de retour (PHP 8 et versions ultérieures)
  • Utilisez switch pour regrouper des cases par passage automatique ou lorsque vous devez prendre en charge PHP 7
  • Les deux sont plus lisibles que de longues chaînes de if/elseif pour les embranchements comportant plusieurs valeurs

Vérification rapide

Que se passe-t-il dans une expression match lorsqu'aucune branche ne correspond et qu'il n'y a pas de valeur par défaut ?

Récapitulatif&nbsp;: switch et match

Principales différences :

  • switch — comparaison non stricte, passage automatique au case suivant, PHP 4 et versions ultérieures
  • match — comparaison stricte, aucun passage automatique, renvoie une valeur, PHP 8 et versions ultérieures
  • Match lève UnhandledMatchError lorsqu'il n'y a pas de valeur par défaut
  • Les branches de match acceptent plusieurs valeurs séparées par des virgules

Ensuite : les boucles for et while.

Questions Fréquemment Posées

La leçon « Instructions switch et match » est-elle gratuite ?

Oui — le texte complet de « Instructions switch et match » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours PHP Academy, passe à CoddyKit PRO. Le cours PHP Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Instructions switch et match » ?

Utilisez switch et match de PHP 8 pour gérer une logique à plusieurs branches. Tu pratiques PHP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer PHP Academy ?

Aucune expérience préalable n'est requise. PHP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Instructions switch et match » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon PHP Academy ?

Oui. Chaque leçon PHP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. if, elseif et else
  2. Instructions switch et match
  3. Boucles for et while
  4. foreach et contrôle des boucles
← Retour à PHP Academy