(PHP 4, PHP 5, PHP 7, PHP 8)
elseif
, como su nombre indica, es una combinación
de if
y de else
. Como la expresión
else
, permite ejecutar una instrucción
después de un if
en el caso de que el "primer"
if sea evaluado como false
. Sin embargo,
a diferencia de la expresión else
,
solo ejecutará la instrucción si la expresión condicional
elseif
es evaluada como
true
. El siguiente ejemplo mostrará
a es más grande que b,
a es igual a b o
a es más pequeño que b :
<?php
if ($a > $b) {
echo "a es más grande que b";
} elseif ($a == $b) {
echo "a es igual a b";
} else {
echo "a es más pequeño que b";
}
?>
Es posible tener varios elseif
que se sigan
unos a otros, después de un if
inicial.
El primer elseif
que sea evaluado
como true
será ejecutado. En PHP, es posible escribir
else if
en dos palabras y su comportamiento será idéntico
al de elseif
(en una sola palabra). La semántica
de las dos expresiones es ligeramente diferente (al igual que en C), pero al final,
el resultado será exactamente el mismo.
La expresión elseif
es ejecutada
solo si el if
anterior y cualquier otro
elseif
anterior son
evaluados como false
, y que
su elseif
es evaluado como
true
.
Nota: Téngase en cuenta que
elseif
yelse if
son tratados de la misma manera solo cuando se utilizan llaves, como en el ejemplo anterior. Cuando se utiliza ":" para definir sus condicionesif
/elseif
, el uso deelseif
en una sola palabra se vuelve necesario. PHP fallará con un error de análisis si se utilizaelse if
.
<?php
/* Mala práctica: */
if ($a > $b):
echo $a." es más grande que ".$b;
else if ($a == $b): // no compilará
echo "La línea anterior provoca un error de interpretación";
endif;
<?php
/* Buena práctica: */
if ($a > $b):
echo $a." es más grande que ".$b;
elseif ($a == $b): // Las dos palabras están unidas
echo $a." igual ".$b;
else:
echo $a." es más grande o igual a ".$b;
endif;
?>