(PHP 4, PHP 5, PHP 7, PHP 8)
elseif
, comme son nom l'indique, est une combinaison
de if
et de else
. Comme l'expression
else
, il permet d'exécuter une instruction
après un if
dans le cas où le "premier"
if est évalué comme false
. Mais,
à la différence de l'expression else
,
il n'exécutera l'instruction que si l'expression conditionnelle
elseif
est évaluée comme
true
. L'exemple suivant affichera
a est plus grand que b,
a est égal à b ou
a est plus petit que b :
<?php
if ($a > $b) {
echo "a est plus grand que b";
} elseif ($a == $b) {
echo "a est égal à b";
} else {
echo "a est plus petit que b";
}
?>
Vous pouvez avoir plusieurs elseif
qui se suivent
les uns après les autres, après un if
initial.
Le premier elseif
qui sera évalué
à true
sera exécuté. En PHP, vous
pouvez aussi écrire "else if
" en deux mots et
son comportement sera identique à la version en un seul mot.
La sémantique des deux expressions est légèrement
différente, mais au bout du compte, le résultat sera
exactement le même.
L'expression elseif
est exécutée
seulement si le if
précédent et tout
autre elseif
précédent sont
évalués comme false
, et que
votre elseif
est évalué à
true
.
Note: A noter que
elseif
etelse if
sont traités de la même façon seulement quand des accolades sont utilisées, comme dans l'exemple ci-dessus. Quand vous utilisez ":" pour définir votre conditionif
/elseif
, vous ne devez pas séparerelse if
en deux mots, sans quoi PHP soulèvera une erreur d'interprétation.
<?php
/* Mauvaise méthode : */
if ($a > $b):
echo $a." est plus grand que ".$b;
else if ($a == $b): // ne compilera pas
echo "La ligne ci-dessus provoque une erreur d'interprétation";
endif;
/* Bonne méthode : */
if ($a > $b):
echo $a." est plus grand que ".$b;
elseif ($a == $b): // Les deux mots sont collés
echo $a." égal ".$b;
else:
echo $a." est plus grand ou égal à ".$b;
endif;
?>