Sentencia PHP If-Else: Guía Completa
Aprende a usar if, else y elseif en PHP para tomar decisiones en tus programas con ejemplos claros y explicaciones detalladas.
Las sentencias condicionales permiten que un programa tome distintos caminos dependiendo de lo que sea verdadero en el momento de su ejecución. En PHP, las sentencias if, else y elseif son la base de esta toma de decisiones. Este capítulo explica cada forma, las condiciones que las impulsan, la sintaxis alternativa de plantilla y los errores comunes que debes evitar.
Esta página cubre el if simple, la adición de una rama else, el encadenamiento de condiciones con elseif, el anidamiento, la sintaxis de dos puntos/endif para plantillas y el atajo del operador ternario.
La sentencia if
Una sentencia if ejecuta un bloque de código solo cuando su condición evalúa a true. La condición va entre paréntesis; el bloque a ejecutar va entre llaves.
if (condition) {
// runs only when condition is true
}La condición es cualquier expresión que PHP pueda leer como un boolean. Los operadores de comparación (>, <, >=, <=, ==, ===, !=) y los operadores lógicos (&&, ||, !) son los bloques de construcción habituales — consulta Operadores PHP para la lista completa.
<?php
$temperature = 30;
if ($temperature > 25) {
echo "It's warm outside.";
}
?>Como 30 > 25 es true, esto imprime It's warm outside.. Si la condición fuera falsa, no se imprimiría nada y PHP simplemente continuaría.
Añadir una rama else
else te proporciona un bloque alternativo que se ejecuta cuando la condición if es false. Exactamente uno de los dos bloques se ejecuta — nunca ambos, nunca ninguno.
Aquí $number > 0 es verdadero, por lo que se ejecuta el primer bloque y la salida es 5 is a positive number. Establecer $number en -3 omitiría el primer bloque y ejecutaría el else, imprimiendo -3 is a negative number.
Cuidado con el operador.
=asigna un valor, mientras que==compara. Escribirif ($number = 0)establece silenciosamente$numberen0y se trata como falso — un error clásico. Usa==(o el estricto===, que también verifica el tipo) para comparaciones.
Comprobar varias condiciones con elseif
Cuando hay más de dos resultados posibles, encadena condiciones con elseif. PHP comprueba cada condición en orden y ejecuta la primera que sea verdadera; si ninguna coincide, se ejecuta el else opcional.
Con $number = 0, la primera condición (> 0) es falsa, por lo que PHP pasa al elseif (== 0), que es verdadero, e imprime 0 is zero. Una vez que una rama coincide, el resto de la cadena se omite — el orden importa, así que coloca las condiciones más específicas primero.
Puedes añadir tantas ramas elseif como necesites. Cuando se compara un único valor con muchas opciones fijas, una sentencia switch suele ser más limpia que una larga cadena de elseif.
Anidar sentencias if
Un bloque if puede contener otro if para tomar decisiones que dependen de una anterior. Mantén el anidamiento poco profundo — más de dos o tres niveles suele indicar que la lógica debería dividirse en funciones.
<?php
$number = 5;
if ($number > 0) {
if ($number % 2 == 0) {
echo "$number is a positive even number";
} else {
echo "$number is a positive odd number";
}
} else {
echo "$number is not positive";
}
?>El if exterior confirma que el número es positivo; el if interior comprueba si es par ($number % 2 == 0). Como 5 es positivo e impar, la salida es 5 is a positive odd number.
Sintaxis alternativa (con dos puntos)
PHP también ofrece una forma basada en dos puntos que termina en endif. Se lee bien cuando las condiciones envuelven HTML en plantillas, donde las llaves sin pareja son fáciles de perder.
<?php $loggedIn = true; ?>
<?php if ($loggedIn): ?>
<p>Welcome back!</p>
<?php else: ?>
<p>Please sign in.</p>
<?php endif; ?>El comportamiento es idéntico a la forma con llaves — if (...): reemplaza a if (...) {, y endif; reemplaza la } de cierre.
El atajo ternario
Para una asignación simple de uno u otro valor, el operador ternario ?: condensa un if/else en una sola expresión: condición ? valor_si_true : valor_si_false.
<?php
$age = 20;
$status = ($age >= 18) ? "adult" : "minor";
echo $status; // adult
?>Esto es equivalente a un bloque if/else de cuatro líneas. Úsalo solo para condiciones cortas; los ternarios anidados se vuelven rápidamente ilegibles.
Resumen
ifejecuta un bloque cuando su condición es verdadera;elseproporciona el alternativo.elseifencadena condiciones adicionales y gana la primera rama verdadera.- Las sentencias
ifpueden anidarse, pero mantén el anidamiento poco profundo. - La sintaxis de dos puntos/
endifes práctica dentro de plantillas HTML, y el ternario?:acorta las elecciones simples entre dos opciones. - Siempre compara con
==/===, no con la asignación=.
A continuación, explora los bucles PHP para repetir código mientras se cumpla una condición, y revisa las variables PHP para los valores que tus condiciones comprueban.