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 activematch 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; // Turkicmatch 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; // Breturn 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 Foundswitch 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); // positiveQuand utiliser switch ou match
Voici quelques recommandations :
- Utilisez
matchlorsque vous avez besoin d'une comparaison stricte et d'une valeur de retour (PHP 8 et versions ultérieures) - Utilisez
switchpour 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 : switch et match
Principales différences :
switch— comparaison non stricte, passage automatique au case suivant, PHP 4 et versions ultérieuresmatch— comparaison stricte, aucun passage automatique, renvoie une valeur, PHP 8 et versions ultérieures- Match lève
UnhandledMatchErrorlorsqu'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
- if, elseif et else
- Instructions switch et match
- Boucles for et while
- foreach et contrôle des boucles