Après les opérateurs, on passe à l’algorithmique : faire une chose selon une situation.
En PHP, ça passe par if / else / elseif, puis par switch quand on compare la même variable à plusieurs valeurs, et par match (PHP 8) quand on veut juste retourner une valeur. Comme dans la vidéo.
if : si c’est vrai, on entre
Référence : if.
La condition entre parenthèses est convertie en booléen. Si elle vaut true, PHP exécute le bloc entre accolades. Si elle vaut false, il l’ignore.
<?php
$age = 20;
if (true) {
echo 'On entre ici';
}
if ($age >= 18) {
echo 'Majeur';
}
if (true) entre toujours. if (false) n’entre jamais. $age >= 18 avec $age = 20 vaut true : le code s’exécute.
else : sinon
Référence : else.
C’est soit l’un, soit l’autre. Si le if passe, on n’exécute pas le else. S’il ne passe pas, on exécute le else.
<?php
$age = 16;
if ($age >= 18) {
echo 'Majeur';
} else {
echo 'Mineur';
}
Ici $age >= 18 est false : on affiche Mineur.
elseif : sinon si
Référence : elseif.
On enchaîne autant de elseif qu’on veut. Le premier qui est vrai s’exécute, les suivants ne sont pas regardés. Si aucun ne passe, on tombe sur le else (s’il y en a un).
<?php
$score = 75;
if ($score >= 90) {
echo 'Excellent';
} elseif ($score >= 70) {
echo 'Bien';
} elseif ($score >= 50) {
echo 'Moyen';
} else {
echo 'Insuffisant';
}
Avec 75, on saute le premier test, on entre dans >= 70, on affiche Bien, et on s’arrête. Avec 45, aucun des if / elseif ne passe : Insuffisant.
Plusieurs conditions : && et ||
Référence : opérateurs logiques.
&& (et) : toutes les conditions doivent être vraies. Si une seule est false, le bloc n’est pas exécuté. PHP s’arrête dès la première fausse (court-circuit).
<?php
$age = 28;
$hasTicket = true;
if ($age >= 18 && $hasTicket === true) {
echo 'Vous pouvez entrer';
}
|| (ou) : au moins une condition vraie suffit. Les deux vraies, ça marche aussi.
<?php
$isAdmin = false;
$isModerator = true;
if ($isAdmin || $isModerator) {
echo 'Accès autorisé';
}
Ici ce n’est pas un admin, mais c’est un modérateur : on entre. Avec un && à la place, on n’entrerait pas.
Inverser : !
! veut dire non. Si $isLogged vaut false, !$isLogged vaut true. C’est le même test que $isLogged === false, souvent plus lisible.
<?php
$isLogged = false;
if (!$isLogged) {
echo 'Vous devez vous connecter';
}
Référence : toujours les opérateurs logiques.
switch : une même variable, plusieurs valeurs
Une cascade if / elseif qui compare toujours la même variable, ce n’est pas le bon outil. Là, on utilise switch.
<?php
$status = 'published';
if ($status == 'draft') {
echo 'Brouillon';
} elseif ($status == 'published') {
echo 'Publié';
} elseif ($status == 'archived') {
echo 'Archivé';
} else {
echo 'Statut inconnu';
}
Équivalent, plus lisible :
<?php
$status = 'published';
switch ($status) {
case 'draft':
echo 'Brouillon';
break;
case 'published':
echo 'Publié';
break;
case 'archived':
echo 'Archivé';
break;
default:
echo 'Statut inconnu';
}
Deux mots-clés propres au switch :
case: « si la valeur est celle-ci ».break: on a trouvé le bon cas, on sort. Sansbreak, PHP continue dans lescasesuivants (fall-through). À ne pas oublier.
default joue le rôle du else.
Dans un switch, l’expression n’est évaluée qu’une fois, puis comparée à chaque case. Un elseif réévalue à chaque test. Autre détail officiel : switch compare de façon large (==), pas stricte.
Dans un case, on peut enchaîner plusieurs instructions (un echo, un appel de fonction, un autre if…).
match : depuis PHP 8, pour retourner une valeur
Référence : match (PHP 8.0).
Si le switch ne sert qu’à attribuer ou retourner une chaîne (ou une autre valeur), match est plus court. C’est une expression : elle produit un résultat.
<?php
$status = 'published';
$label = match ($status) {
'draft' => 'Brouillon',
'published' => 'Publié',
'archived' => 'Archivé',
default => 'Statut inconnu',
};
echo $label;
Si dans un switch vous avez besoin d’appeler une fonction, d’écrire plusieurs lignes ou d’imbriquer un if, gardez le switch. match sert à : telle valeur → telle valeur retournée.
Comparaison stricte
match compare avec === (identité), pas ==. switch compare avec ==.
<?php
$value = '1'; // string, pas l'entier 1
echo match ($value) {
1 => 'entier 1',
'1' => 'string 1',
default => 'autre',
};
// string 1
'1' (string) ne matche pas l’entier 1. Si $value = 1 (entier), c’est l’autre bras qui gagne.
Plusieurs valeurs pour un même résultat
Les bras peuvent lister plusieurs valeurs, séparées par une virgule (un ou) :
<?php
$role = 'moderator';
$access = match ($role) {
'admin', 'moderator' => 'Accès complet',
'tutor' => 'Accès tuteur',
default => 'Accès inconnu',
};
Équivalent à deux bras qui retourneraient la même chose. Moins de répétition.
Démo vidéo
FAQ rapide (SEO & technique)
Différence entre if et else ?
if s’exécute si la condition est vraie. else s’exécute seulement si elle est fausse. Voir if et else.
À quoi sert elseif ?
À enchaîner d’autres tests. Le premier vrai gagne, le reste n’est pas évalué. Voir elseif.
&& ou || ?
&& = et (tout vrai). || = ou (au moins un vrai). Voir opérateurs logiques.
Pourquoi break dans un switch ?
Sans break, PHP enchaîne les case suivants. Voir switch.
switch ou match ?
switch : plusieurs instructions par cas, comparaison large. match (PHP 8) : retourne une valeur, comparaison stricte ===. Voir match.
Conclusion
Les conditions, c’est le cœur de l’algorithmique : if / else / elseif pour les tests, && / || / ! pour les combiner, switch quand on compare une même variable à plusieurs valeurs, match depuis PHP 8 quand on veut juste retourner une valeur (avec ===).
La suite de la playlist : les tableaux (indexés et associatifs), avant les boucles. L’épisode est là : PHP : les tableaux.