W3docs

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 5

Comme $myNumber == 4 est faux mais $myNumber == 5 est vrai, le deuxième bloc s'exécute et le else n'est jamais atteint.

« Essayez vous-même » n'est pas disponible pour cet exemple.

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: B

Un 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: two

L'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 content

Cela 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 >= 70 en premier attribuerait la note "C" à tous les scores suffisants.
  • elseif nécessite un if initial. Il ne peut pas être utilisé seul — il appartient toujours à une chaîne if existante.

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'elseif prolonge
  • else — la branche de repli générale
  • endif — ferme la forme avec syntaxe à deux-points
  • switch — branchement multiple sur une seule valeur

Pratique

Pratique
Qu'est-ce qui est correct concernant l'instruction 'elseif' en PHP ?
Qu'est-ce qui est correct concernant l'instruction 'elseif' en PHP ?
Was this page helpful?