Lección 10 de 75 14 min de lectura

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
<?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
<?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
<?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
Orden de evaluación

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
<?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
<?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');
No abuses del ternario

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
<?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
<?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";
}

¿Te está gustando el curso?

Tenemos cursos premium con proyectos reales y soporte personalizado.

Descubrir cursos premium