Estructuras condicionales en PHP IV: If… elseif… else

Abril 2016: Post recuperado de Aprendiendo PHP (web ya inactiva)
[Control de flujo o estructuras de control en PHP IV] Instrucciones IF/Elseif/Else

Valencia, 24/09/2012, G.B.
Tras las estructuras condicionales o de control de flujo if y if… else, ahora toca el turno a la siguiente: if… elseif… else. Con elseif añadimos más posibilidades, más alternativas.

Elseif (también escrito else if, aunque menos frecuentemente) es una combinación de if y else y una ampliación de if. Si la condición contenida en el if es falsa (FALSE, que no se cumple), entonces el control de flujo saltará al primer elseif. Si éste tampoco se cumple, pasaría al siguiente, hasta llegar a un elseif en que la condición sí se cumpliera, que fuera verdadera (TRUE). En el caso de que no se cumpliera ninguno de los elseif, pasaríamos por último al else para ejecutar las sentencias contenidas en el mismo.

Como observamos, las estructuras elseif pueden anidarse, es decir, ir abriendo distintas posibilidades si no se cumplen las anteriores. La sintaxis es la siguiente:

if (condición1) {
sentencia1; // Si esto no se cumple, saltamos al primer elseif
}

elseif (condición2) {
sentencia2;
}
 // Tras esta línea pueden ir anidados más elseif
else {
sentencia3; // Si ninguno de los elseif se han cumplido, se ejecutará estas sentencias
}

En caso de que la primera condición, la del if, no se cumpla, pasamos al primer elseif. Si este tampoco se cumple, pasaríamos al siguiente, hasta llegar al else, en caso de que no se cumpliera ninguno de ellos. Veamos un pequeño ejemplo:
<?php
$numero1 = '2';
$numero2 = '3';
$numero3 = '4';
$numero4 = '2';
if ($numero1 == $numero2) {
print "El $numero1 es igual al $numero2.";
}
elseif ($numero2 == $numero3) {
print "El $numero2 es igual al $numero3";
}
elseif ($nunero3 == $nunero4) {
print "El $numero3 es igual al $numero3";
}
else {
print "El $numero1 es igual al $numero4.
¿Lógico, no?";
}
?>


Ejecutar ejemplo

Otro ejemplo tonto, lo sé, pero espero que  explicativo.  También podemos ampliar el ejemplo que hemos utilizado en los anteriores posts sobre las estructuras condicionales, especificando franjas horarias más pequeñas:

<?php
$hora = date (“H”);
if ($hora == ('7') or $hora < ('8')){
echo 'Es hora de levantarse, campeón';
}
elseif ($hora == ('14')){
echo '¿Qué vas a comer hoy?';
}
elseif ($hora <= ('16')){
echo '¿Demasiado tarde para comer, ¿no crees?';
}
elseif ($hora <= ('20')){
echo 'No, todavía no es hora de cenar';
}
elseif ($hora == ('21') or $hora <= ('22')){
echo 'Ve pensando en lo que vas a cenar, si tienes hambre, claro';
elseif ($hora == ('23')){
echo 'Demasiado tarde para cenar, ¿no crees?'; /
}
elseif ($hora == ('1') or $hora <= ('2')){
echo 'Si no te has ido a dormir todavía, deberías hacerlo!';
}
else
echo 'Bienvenido';
?>

Ejecutar ejemplo 2

Por último, comentaros que puede ser realmente engorroso tener que contemplar todas las posibilidades y así estar ‘obligados’ a utilizar un montón de elseif anidados. Este último ejemplo se puede hacer de una forma mucho mejor  y más cómoda (sin tener en cuenta los posibles fallos de cálculo entre las franjas horarias que yo haya podido cometer al hacerlo…). Para ello, disponemos de la estructura switch, la cual es más sencilla de escribir (ahorramos líneas de código y conseguimos el mismo resultado que con if/elseif/else) y que veremos en el siguiente post. Hasta pronto!


Lecturas recomendadas:

elseif (PHP.net)
Elseif (gratismil.com)

CategoríasPHP