(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, il est possible d'écrire else if
en deux mots et son comportement sera identique à celle de elseif
(en un seul mot). La sémantique des deux expressions est légèrement différente (tout comme en C), 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 vos conditionsif
/elseif
, l'utilisation deelseif
en un seul mot devient nécessaire. PHP échouera avec une erreur d'analyse sielse if
est utilisé.
<?php
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;
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;
?>