else
Le mot-clé « else » est une structure de contrôle PHP utilisée avec « if » pour exécuter un bloc de code quand la condition « if » est fausse.
Le mot-clé PHP else
else est le complément de l'instruction if en PHP. Seul, un if détermine uniquement si un bloc de code doit s'exécuter ; en l'associant à else, vous fournissez une alternative qui s'exécute chaque fois que la condition if est évaluée à false. Ensemble, ils expriment un branchement simple et clair : « fais ceci — sinon, fais cela. »
Cette page couvre la syntaxe exacte, la différence entre else, elseif et une chaîne de if, la syntaxe alternative avec deux-points utilisée dans les gabarits HTML, et les pièges courants (comme confondre = avec ==).
Syntaxe
Un bloc else ne peut apparaître qu'immédiatement après un if (ou après un elseif). Il ne prend aucune condition propre :
<?php
if (condition) {
// runs when condition is truthy
} else {
// runs when condition is falsy
}Exactement l'un des deux blocs s'exécute — jamais les deux à la fois, et jamais aucun. La branche else attrape tout ce que la condition if n'a pas capturé, vous n'avez donc pas besoin d'écrire la condition inverse à la main.
Un exemple simple
<?php
$myNumber = 5;
if ($myNumber == 4) {
echo "Number is 4";
} else {
echo "Number is not 4";
}
// Output: Number is not 4Comme $myNumber vaut 5, la condition $myNumber == 4 est false, donc le contrôle passe au bloc else.
Qu'est-ce qui compte comme « false » ?
Le bloc else s'exécute chaque fois que la condition if est falsy — pas seulement quand elle vaut littéralement false. PHP considère les valeurs suivantes comme falsy : false, 0, 0.0, "0", "" (chaîne vide), null, et le tableau vide []. Tout le reste est truthy.
<?php
$cart = [];
if ($cart) {
echo "You have items in your cart.";
} else {
echo "Your cart is empty."; // an empty array is falsy
}
// Output: Your cart is empty.C'est pratique pour des vérifications du type « y a-t-il quelque chose ici ? », mais soyez attentif : "0" et 0 sont falsy, donc une valeur qui vous importe peut se retrouver dans la branche else. Lorsque vous avez besoin d'un test précis, comparez explicitement (if ($x === 0)) plutôt que de vous fier à la truthiness.
else vs elseif vs plusieurs if séparés
Un simple if/else n'a que deux issues. Quand vous en avez besoin de plus, utilisez elseif plutôt que d'empiler des instructions if indépendantes :
<?php
$score = 72;
if ($score >= 90) {
echo "Grade: A";
} elseif ($score >= 70) {
echo "Grade: B";
} else {
echo "Grade: C or lower";
}
// Output: Grade: BLa chaîne s'arrête à la première branche qui correspond, donc l'ordre est important — mettez les conditions les plus spécifiques ou les plus élevées en premier. Utiliser deux blocs if séparés évaluerait les deux conditions indépendamment et pourrait afficher deux notes. Consultez PHP if, else, elseif pour une comparaison plus complète.
Syntaxe alternative (avec deux-points)
Quand vous mélangez PHP et HTML dans un gabarit, le style avec accolades peut être difficile à lire. PHP propose une syntaxe alternative qui remplace { par : et ferme le bloc avec endif :
<?php $loggedIn = true; ?>
<?php if ($loggedIn): ?>
<p>Welcome back!</p>
<?php else: ?>
<p>Please log in.</p>
<?php endif; ?>Les deux styles se comportent de manière identique ; la forme avec deux-points rend simplement les gabarits plus lisibles.
Imbrication
Un if/else peut se trouver à l'intérieur d'une autre branche else. Chaque else se lie toujours au if le plus proche qui n'a pas encore été apparié :
<?php
$age = 17;
$hasGuardian = true;
if ($age >= 18) {
echo "Admitted.";
} else {
if ($hasGuardian) {
echo "Admitted with a guardian.";
} else {
echo "Not admitted.";
}
}
// Output: Admitted with a guardian.Si vous vous retrouvez à imbriquer sur plus d'un ou deux niveaux, elseif ou une instruction switch est généralement plus lisible.
Piège courant : = vs ==
Un bug fréquent consiste à écrire = (affectation) là où on voulait == (comparaison). La ligne ci-dessous affecte 4 à $x, et comme 4 est truthy, la branche if s'exécute toujours — le else devient inaccessible :
<?php
$x = 1;
if ($x = 4) { // assignment, not comparison!
echo "Always runs";
} else {
echo "Never runs";
}
// Output: Always runsUtilisez == pour une comparaison lâche ou === pour une comparaison stricte (tenant compte du type). La page des opérateurs de comparaison les liste tous.
L'opérateur ternaire : un raccourci pour les cas simples
Quand les deux branches produisent simplement une valeur, l'opérateur ternaire ?: est une alternative compacte à un if/else complet :
<?php
$age = 20;
$status = $age >= 18 ? "adult" : "minor";
echo $status;
// Output: adultRéservez-le aux décisions courtes portant sur une seule valeur — une logique à plusieurs instructions reste plus claire sous forme de vrai if/else.
Récapitulatif
elses'exécute uniquement quand la condition duif(ouelseif) précédent est falsy ; exactement une branche s'exécute.- « Falsy » inclut
false,0,"",nullet[]— pas seulement le littéralfalse. - Utilisez
elseifpour plus de deux issues, et la syntaxe avec deux-points/endifdans les gabarits HTML. - Faites attention à
=vs==, et utilisez l'opérateur ternaire?:lorsque vous n'avez besoin que de choisir une valeur.