Condicionales (if, else, elseif)
Los condicionales permiten que tu programa tome decisiones. Ejecutan diferentes bloques de código según se cumplan o no ciertas condiciones. Son fundamentales en cualquier programa.
La sentencia if
La forma más básica de condicional. Ejecuta código solo si la condición es verdadera.
<?php
$edad = 20;
if ($edad >= 18) {
echo 'Eres mayor de edad';
}
// Con una sola línea, las llaves son opcionales (pero recomendadas)
if ($edad >= 18)
echo 'Eres mayor de edad';
// La condición se evalúa como booleano
$tienePermiso = true;
if ($tienePermiso) {
echo 'Acceso concedido';
}
if...else
Ejecuta un bloque si la condición es verdadera, otro si es falsa.
<?php
$edad = 16;
if ($edad >= 18) {
echo 'Eres mayor de edad';
} else {
echo 'Eres menor de edad';
}
// Ejemplo práctico: verificar usuario
$usuario = null;
if ($usuario !== null) {
echo 'Bienvenido, ' . $usuario->nombre;
} else {
echo 'Por favor, inicia sesión';
}
if...elseif...else
Para evaluar múltiples condiciones en secuencia:
<?php
$nota = 75;
if ($nota >= 90) {
$calificacion = 'Sobresaliente';
} elseif ($nota >= 70) {
$calificacion = 'Notable';
} elseif ($nota >= 50) {
$calificacion = 'Aprobado';
} else {
$calificacion = 'Suspenso';
}
echo "Tu calificación: $calificacion"; // Notable
// También puedes escribir "else if" (separado)
// Pero "elseif" (junto) es preferido
Las condiciones se evalúan en orden. En cuanto una es verdadera, se ejecuta su bloque y se ignoran las demás. Por eso el orden importa: pon las condiciones más específicas primero.
Condiciones compuestas
Combina múltiples condiciones con operadores lógicos:
<?php
$edad = 25;
$tieneLicencia = true;
$tieneSeguro = true;
// AND (&&) - Todas deben ser verdaderas
if ($edad >= 18 && $tieneLicencia && $tieneSeguro) {
echo 'Puedes conducir';
}
// OR (||) - Al menos una debe ser verdadera
$esAdmin = false;
$esModerador = true;
if ($esAdmin || $esModerador) {
echo 'Tienes permisos de gestión';
}
// Combinando AND y OR (usa paréntesis para claridad)
$esPremium = false;
$tieneCreditos = true;
$esEmpleado = true;
if ($esPremium || ($tieneCreditos && $esEmpleado)) {
echo 'Acceso permitido';
}
// NOT (!) - Invierte la condición
$bloqueado = false;
if (!$bloqueado) {
echo 'Usuario activo';
}
Operador ternario
Una forma compacta de escribir if...else simples:
<?php
$edad = 20;
// Sintaxis: condición ? valor_si_true : valor_si_false
$estado = $edad >= 18 ? 'adulto' : 'menor';
// Equivalente a:
if ($edad >= 18) {
$estado = 'adulto';
} else {
$estado = 'menor';
}
// Útil para valores por defecto
$nombre = $_GET['nombre'] ?? '';
$saludo = $nombre !== '' ? "Hola, $nombre" : 'Hola, visitante';
// Puede usarse directamente en echo
echo $edad >= 18 ? 'Mayor' : 'Menor';
// Ternarios anidados (evítalos, son difíciles de leer)
$tipo = $edad < 13 ? 'niño' : ($edad < 18 ? 'adolescente' : 'adulto');
El operador ternario es útil para asignaciones simples, pero si la lógica es compleja, usa if...else normal. La legibilidad es más importante que el código compacto.
Sintaxis alternativa (para templates)
PHP ofrece una sintaxis alternativa útil cuando mezclas PHP con HTML:
<?php $esAdmin = true; ?>
<!-- Sintaxis alternativa con : y endif -->
<?php if ($esAdmin): ?>
<div class="admin-panel">
<h1>Panel de Administración</h1>
</div>
<?php else: ?>
<p>No tienes acceso a esta sección</p>
<?php endif; ?>
<!-- Con elseif -->
<?php if ($rol === 'admin'): ?>
<span class="badge badge-admin">Admin</span>
<?php elseif ($rol === 'editor'): ?>
<span class="badge badge-editor">Editor</span>
<?php else: ?>
<span class="badge badge-user">Usuario</span>
<?php endif; ?>
Buenas prácticas
<?php
// ✓ BIEN: Usa comparación estricta
if ($valor === null) { }
// ✗ MAL: Comparación débil puede dar sorpresas
if ($valor == null) { }
// ✓ BIEN: Early return para reducir anidación
function procesarUsuario($usuario) {
if ($usuario === null) {
return 'Usuario no encontrado';
}
if (!$usuario->activo) {
return 'Usuario inactivo';
}
// Lógica principal aquí
return 'Procesado correctamente';
}
// ✗ MAL: Anidación excesiva
function procesarUsuarioMal($usuario) {
if ($usuario !== null) {
if ($usuario->activo) {
// Lógica principal muy anidada
return 'Procesado correctamente';
} else {
return 'Usuario inactivo';
}
} else {
return 'Usuario no encontrado';
}
}
// ✓ BIEN: Condiciones en variables para claridad
$esMayorDeEdad = $edad >= 18;
$tieneLicencia = $usuario->licencia !== null;
$puedeConducir = $esMayorDeEdad && $tieneLicencia;
if ($puedeConducir) {
// ...
}
Ejercicios
Ejercicio 1: Clasificar edad
Dada una variable $edad con valor
15, determina si la persona es "menor de edad"
(menos de 18) o "mayor de edad" (18 o mas).
Imprime el resultado.
Ver solucion
<?php
declare(strict_types=1);
$edad = 15;
if ($edad >= 18) {
echo "Mayor de edad\n";
} else {
echo "Menor de edad\n";
}
Ejercicio 2: Calificacion por nota
Dada una variable $nota con valor
85, asigna una calificacion segun: 90-100 =
"Sobresaliente", 70-89 = "Notable", 50-69 =
"Aprobado", menos de 50 = "Suspenso".
Ver solucion
<?php
declare(strict_types=1);
$nota = 85;
if ($nota >= 90) {
$calificacion = 'Sobresaliente';
} elseif ($nota >= 70) {
$calificacion = 'Notable';
} elseif ($nota >= 50) {
$calificacion = 'Aprobado';
} else {
$calificacion = 'Suspenso';
}
echo "Nota: $nota - Calificacion: $calificacion\n";
Ejercicio 3: Acceso con multiples condiciones
Tienes $edad = 25,
$tieneCuenta = true y
$estaVerificado = false. Determina
si el usuario puede acceder (debe ser mayor de
18, tener cuenta Y estar verificado).
Ver solucion
<?php
declare(strict_types=1);
$edad = 25;
$tieneCuenta = true;
$estaVerificado = false;
if ($edad >= 18 && $tieneCuenta && $estaVerificado) {
echo "Acceso permitido\n";
} else {
echo "Acceso denegado\n";
}
¿Has encontrado un error o tienes una sugerencia para mejorar esta lección?
Escríbenos¿Te está gustando el curso?
Tenemos cursos premium con proyectos reales y soporte personalizado.
Descubrir cursos premium