Curso de PHP
Estructuras condicionales if else en PHP
Por Víctor Peña · Publicado el

Hola, ¿cómo están? Continuando con el curso de PHP, hoy veremos las estructuras condicionales. Con lo que aprendimos sobre operadores de comparación, ya podemos hacer que nuestros programas tomen decisiones.
¡Empecemos!
Qué es una estructura condicional
Una estructura condicional permite ejecutar un bloque de código solo si se cumple una condición. Es la diferencia entre un programa que siempre hace lo mismo y uno que reacciona a los datos.
La estructura if
La más simple. Si la condición es verdadera, se ejecuta el bloque; si no, se salta.
<?php
$edad = 20;
if ($edad >= 18) {
echo "Eres mayor de edad";
}
La condición va entre paréntesis y el bloque entre llaves.
if else
Cuando queremos hacer una cosa u otra:
<?php
$edad = 15;
if ($edad >= 18) {
echo "Puedes votar";
} else {
echo "Todavía no puedes votar";
}
El bloque else se ejecuta cuando la condición es falsa. No lleva condición propia: es «en cualquier otro caso».
if elseif else
Para evaluar varias condiciones en cadena:
<?php
$nota = 78;
if ($nota >= 90) {
echo "Excelente";
} elseif ($nota >= 70) {
echo "Bueno";
} elseif ($nota >= 51) {
echo "Aprobado";
} else {
echo "Reprobado";
}
Dos cosas importantes aquí:
Se evalúa de arriba hacia abajo y se detiene en la primera que se cumple. Por eso el orden importa: si pusieras $nota >= 51 al principio, un 95 entraría ahí y nunca llegaría a «Excelente».
Solo se ejecuta un bloque. En cuanto uno se cumple, el resto se ignora.
También puedes escribirlo como else if separado, pero elseif es la forma habitual en PHP.
Condiciones anidadas
Un if puede contener otro dentro:
<?php
$usuario = "victor";
$activo = true;
if ($usuario !== "") {
if ($activo) {
echo "Bienvenido, $usuario";
} else {
echo "Tu cuenta está desactivada";
}
}
Funciona, pero conviene usarlo con moderación. Cuando el anidamiento pasa de dos o tres niveles, el código se vuelve difícil de seguir. Muchas veces se puede simplificar combinando condiciones:
<?php
if ($usuario !== "" && $activo) {
echo "Bienvenido, $usuario";
}
Salida temprana: una técnica que ordena mucho
En lugar de anidar, comprueba primero lo que descarta y sal cuanto antes. El código queda plano y se lee mejor:
<?php
function procesarPedido($pedido)
{
if (!isset($pedido)) {
return "No hay pedido";
}
if ($pedido['total'] <= 0) {
return "El total no es válido";
}
// Aquí llega solo lo válido
return "Pedido procesado";
}
Compáralo mentalmente con la versión anidada: son tres niveles menos de indentación.
El operador ternario
Cuando la decisión es simple, hay una forma abreviada:
<?php
$edad = 20;
$mensaje = ($edad >= 18) ? "Mayor de edad" : "Menor de edad";
echo $mensaje;
Se lee así: condición ? valor si es verdadera : valor si es falsa.
Es muy cómodo para asignaciones cortas y dentro de HTML:
<?php
$clase = $activo ? "verde" : "rojo";
Eso sí, no lo anides. Un ternario dentro de otro es prácticamente ilegible; si necesitas eso, usa un if.
El operador de fusión de null
Cuando quieres un valor por defecto si algo no existe:
<?php
$nombre = $_GET['nombre'] ?? "Invitado";
Si $_GET['nombre'] no existe o es null, se usa "Invitado". Sin este operador tendrías que escribir:
<?php
$nombre = isset($_GET['nombre']) ? $_GET['nombre'] : "Invitado";
Lo vas a usar constantemente al trabajar con formularios. Existe además la versión que asigna:
<?php
$configuracion['idioma'] ??= 'es';
Sintaxis alternativa para mezclar con HTML
Cuando escribes condicionales dentro de una plantilla HTML, las llaves se pierden de vista. PHP ofrece una sintaxis pensada para eso:
<?php if ($usuario): ?>
<p>Hola, <?php echo $usuario; ?></p>
<?php else: ?>
<p>Por favor, inicia sesión</p>
<?php endif; ?>
En lugar de llaves se usan dos puntos y una palabra de cierre: endif. Es mucho más legible dentro de HTML, porque ves claramente dónde termina cada bloque.
Errores comunes
Confundir = con ==. El primero asigna, el segundo compara:
<?php
if ($edad = 18) { // asigna 18 y siempre da verdadero
// ...
}
Es un error clásico y PHP no siempre avisa. Recuerda usar ===.
Comparar decimales. Como vimos en la lección de operadores aritméticos, 0.1 + 0.2 === 0.3 es falso.
Olvidar que todo lo de un formulario es texto. Un if ($edad === 18) falla si $edad vale "18". Conviértelo antes con (int).
Un ejemplo práctico
Calculemos el descuento de una compra:
<?php
$total = 850;
$esSocio = true;
if ($total >= 1000) {
$descuento = 0.20;
} elseif ($total >= 500 && $esSocio) {
$descuento = 0.10;
} elseif ($total >= 500) {
$descuento = 0.05;
} else {
$descuento = 0;
}
$aPagar = $total - ($total * $descuento);
echo "Descuento aplicado: " . ($descuento * 100) . "%\n";
echo "Total a pagar: " . round($aPagar, 2);
Fíjate en el orden de las condiciones: la más específica va primero.
Para cerrar
Las condicionales son la herramienta con la que tu programa decide. Lo importante: ordena las condiciones de la más específica a la más general, prefiere la salida temprana al anidamiento profundo, y usa la sintaxis alternativa cuando escribas dentro de HTML.
En la siguiente lección veremos los bucles while y do while.
Saludos y éxitos.
Norvic Software
Desarrollamos el software que tu empresa necesita
Somos una fábrica de software en Bolivia. Construimos sistemas a medida y aplicaciones móviles, y llevamos Inteligencia Artificial a las empresas que ya tienen un sistema funcionando.
- Chatbots con Inteligencia Artificial
- Creación de agentes de IA
- Integración de IA en tus sistemas
- Desarrollo de software a medida
- Aplicaciones móviles iOS y Android
- Consultoría y asesoramiento técnico
Cotización sin costo · Respuesta directa por WhatsApp