Condicionales - elseif, else if y else - Curso de PHP y MySQL - Capítulo 15

Curso de PHP y MySQL desde cero

Volvemos con los condicionales, vamos a añadirle al condicional if, algo nuevo, else.

¿Qué es else?

else nos permite añadir una respuesta en el caso de que una condición nos devuelva false.

En el capítulo 12, te puse este ejemplo:

Código PHP

<?php
$numero1 = 100;
$numero2 = 150;

if ($numero1 > $numero2) {
	echo $numero1." es mayor que ".$numero2;
}

if ($numero1 < $numero2) {
	echo $numero1." es menor que ".$numero2;
}
?>

En el caso de que $numero1 sea mayor que $numero2, el primer if da true y se ejecuta su código, en caso contrario, se ejecuta el siguiente if que lleva todo lo contrario. Esto no es para nada lo más correcto, es una mala práctica y te lo mostré hasta enseñarte el else, para que puedas apreciar mejor su utilidad.

Además, ¿qué ocurre si los dos valores son iguales? Tendríamos que añadirle otro if más para contemplar esa posibilidad.

La mejor forma de hacer esto es esta:

Código PHP

<?php
$numero1 = 150;
$numero2 = 100;

if ($numero1 > $numero2) {
	echo $numero1." es mayor que ".$numero2;
} else {
	echo "Los valores son diferentes";
}
?>

Si la expresión del if devuelve true ($numero1 > $numero2), se va a ejecutar el bloque de código del if. En cualquier otro caso, la expresión siempre devuelve false, y al devolver esto, provoca la ejecución del bloque else.
else siempre va sujeto al if, no puede ir suelto.

Añadiendo else if o elseif

Vamos a mejorar todavía más los condicionales con la posibilidad de añadirle al if varias condiciones verdaderas gracias al uso de else if o elseif.

Ten en cuenta que cada bloque tiene sus llaves de apertura y cierre. En el siguiente ejemplo, el if, se abre en la línea 5 y se cierra en la 7, antes del else if. else if se abre en la línea 7 y se cierra en la 9, antes del else. else, se abre en la línea 9 y se cierra en la 11.

En PHP, está aceptado el uso de else if todo junto elseif.

El orden del las llaves no es obligatorio como en el ejemplo, puedes establecer espacios entre los bloques sin problema, no obstante, estoy escribiendo como se escribe por covención.

Código PHP

<?php
$numero1 = 150;
$numero2 = 100;

if ($numero1 > $numero2) {
	echo $numero1." es mayor que ".$numero2;
} else if ($numero1 == $numero2) {
	echo "Los dos valores son iguales";
} else {
echo $numero1." es menor que ".$numero2;;
}
?>

terminal Resultado en la consola terminal

Puesto que $numero1 es mayor que $numero2, se ejecuta el bloque if, su expresión ha devuelto true. El resto de código del condicional, es ignorado por el intérprete.

150 es mayor que 100

Veamos otra posibilidad:

Código PHP

<?php
$numero1 = 100;
$numero2 = 100;

if ($numero1 > $numero2) {
echo $numero1." es mayor que ".$numero2;
} else if ($numero1 == $numero2) {
echo "Los dos valores son iguales";
} else {
echo $numero1." es menor que ".$numero2;;
}
?>

terminal Resultado en la consola terminal

La expresión del if, devuelve false. Se evalúa la expresión del else if. Esta devuelve true. Se ejecuta su código y el resto del condicional es ignorado.

Los dos valores son iguales

Podemos escribir tantos else if como queramos, en cambio, en un mismo condicional solo podemos tener un if al principio y un else al final. Entre medio, todos los else if que queramos.

Código PHP

<?php
$numero1 = 100;
$numero2 = 300;

if ($numero1 > $numero2) {
	echo $numero1." es mayor que ".$numero2;
} else if ($numero1 == $numero2) {
	echo "Los dos valores son iguales";
} else {
	echo $numero1." es menor que ".$numero2;;
}
?>

terminal Resultado en la consola terminal

La condición del if da false. La del else if también. Entonces, se devuelve false y se ejecuta el bloque de descarte else.

100 es menor que 300