elseif
Le mot-clé "elseif" est une structure de contrôle PHP utilisée avec "if" pour exécuter un bloc de code lorsque la condition "if" est fausse
Le mot-clé PHP elseif
elseif est une structure de contrôle en PHP qui ajoute une condition supplémentaire à une instruction if. Son bloc ne s'exécute que lorsque toutes les conditions précédentes étaient fausses et que sa propre condition est vraie. Vous pouvez enchaîner autant de clauses elseif que nécessaire, en terminant éventuellement par un else qui capture tous les autres cas.
Cette page couvre la syntaxe, l'ordre d'évaluation des conditions, la syntaxe alternative avec deux-points, la distinction entre elseif et else if (une erreur facile à commettre), ainsi que les pièges courants.
Syntaxe
<?php
if (condition1) {
// runs if condition1 is true
} elseif (condition2) {
// runs if condition1 is false AND condition2 is true
} elseif (condition3) {
// runs if condition1 and condition2 are false AND condition3 is true
} else {
// runs if none of the above conditions are true
}PHP évalue les conditions de haut en bas et s'arrête à la première qui est vraie — ce bloc s'exécute et le reste de la chaîne (y compris else) est ignoré. Le else final est facultatif ; sans lui, rien ne se passe si toutes les conditions sont fausses.
Un exemple de base
<?php
$myNumber = 5;
if ($myNumber == 4) {
echo "Number is 4";
} elseif ($myNumber == 5) {
echo "Number is 5";
} else {
echo "Number is not 4 or 5";
}
// Output: Number is 5Comme $myNumber == 4 est faux mais $myNumber == 5 est vrai, le deuxième bloc s'exécute et le else n'est jamais atteint.
Enchaîner plusieurs conditions
elseif excelle lorsque vous devez associer une valeur à plusieurs plages mutuellement exclusives. La première branche correspondante l'emporte, donc ordonnez vos conditions de la plus spécifique à la plus générale :
<?php
$score = 82;
if ($score >= 90) {
$grade = "A";
} elseif ($score >= 80) {
$grade = "B";
} elseif ($score >= 70) {
$grade = "C";
} else {
$grade = "F";
}
echo "Grade: {$grade}";
// Output: Grade: BUn score de 82 échoue au premier test (>= 90) mais passe le second (>= 80), donc $grade devient "B" et les branches restantes sont ignorées.
elseif vs else if
PHP accepte à la fois elseif (un mot) et else if (deux mots) — ils se comportent de manière identique avec des accolades :
<?php
$x = 2;
if ($x === 1) {
echo "one";
} else if ($x === 2) { // same as elseif
echo "two";
}
// Output: twoL'exception est la syntaxe alternative avec deux-points (voir ci-dessous) : vous devez y écrire elseif en un seul mot. else if est une erreur de syntaxe à l'intérieur d'un bloc if: ... endif;. Pour éviter les surprises, de nombreux guides de style recommandent de toujours utiliser elseif en un seul mot.
Syntaxe alternative (avec deux-points)
Lors du mélange de PHP avec du HTML dans des gabarits, la syntaxe avec deux-points est souvent plus lisible que les accolades. Elle utilise endif; pour fermer le bloc :
<?php
$role = "editor";
if ($role === "admin"):
echo "Full access";
elseif ($role === "editor"):
echo "Can edit content";
else:
echo "Read only";
endif;
// Output: Can edit contentCela s'associe naturellement au mot-clé endif dans les gabarits HTML. Pour en savoir plus, consultez la présentation de if / else / elseif.
Pièges courants
=vs==. Dans une condition,=affecte une valeur au lieu de comparer. Utilisez==pour une comparaison souple ou===pour une comparaison stricte (qui tient compte du type).- L'ordre est important. Puisque la première branche vraie l'emporte, une condition large placée trop tôt peut masquer des conditions plus spécifiques situées en dessous. Dans l'exemple de notation, placer
$score >= 70en premier attribuerait la note"C"à tous les scores suffisants. elseifnécessite unifinitial. Il ne peut pas être utilisé seul — il appartient toujours à une chaîneifexistante.
Quand utiliser elseif plutôt que switch
Utilisez elseif pour des plages, des conditions combinées ou des tests portant sur des variables différentes. Lorsque vous comparez une seule valeur à de nombreuses options fixes, une instruction switch est généralement plus lisible.
Voir aussi
if— l'instruction qu'elseifprolongeelse— la branche de repli généraleendif— ferme la forme avec syntaxe à deux-pointsswitch— branchement multiple sur une seule valeur