Inicio > Cursos > PHP > Condicionales y match
PHPFundamentos de PHPLección 4 de 15

Condicionales y match

El control de flujo en PHP es muy similar al de JavaScript: if, elseif (sin espacio), else para condiciones; switch/case para múltiples valores con break obligatorio; for, while, foreach para loops. Una diferencia importante: PHP tiene el operador de comparación estricta === (compara valor Y tipo) además del == (solo valor).

En PHP, "0" == false es true, pero "0" === false es false. Siempre usa === para evitar comparaciones inesperadas.

match (PHP 8) es la versión moderna y mejorada de switch. Tiene tres ventajas sobre switch: no necesita break (no hay fall-through), usa comparación estricta (===) por defecto, y puede retornar un valor directamente para asignarlo. La sintaxis es: $resultado = match($variable) { valor1 => expresion1, valor2 => expresion2, default => expresionDefault }.

Para casos que no están en el match, si no hay default lanza UnhandledMatchError en lugar de seguir silenciosamente.

<?php
$nota = 85;

// if / elseif / else
if ($nota >= 90) {
    echo "Excelente";
} elseif ($nota >= 70) {
    echo "Bien";
} elseif ($nota >= 60) {
    echo "Suficiente";
} else {
    echo "Reprobado";
}

// Operador ternario
$estado = $nota >= 60 ? "Aprobado" : "Reprobado";

// Operador de fusión nula (PHP 7+)
$nombre = $_GET['nombre'] ?? "Invitado";

// switch (comparación débil con ==)
$dia = "lunes";
switch ($dia) {
    case "lunes":
    case "martes":
        echo "Inicio de semana";
        break;
    case "viernes":
        echo "¡Casi fin de semana!";
        break;
    default:
        echo "Mitad de semana";
}

// match (PHP 8) - comparación ESTRICTA, retorna valor
$resultado = match($dia) {
    "lunes", "martes" => "Inicio de semana",
    "miércoles" => "Mitad",
    "jueves", "viernes" => "Final",
    "sábado", "domingo" => "Fin de semana",
    default => "Día inválido"
};

// match con condiciones
$mensaje = match(true) {
    $nota >= 90 => "Excelente",
    $nota >= 70 => "Bien",
    $nota >= 60 => "Suficiente",
    default => "Reprobado"
};
Consejo✅ Usa match en lugar de switch cuando puedas. match usa comparación estricta (===), no cae a través de cases sin break, y retorna un valor.
← Strings y Manipulación de TextoBucles y Control de Flujo →

Practica esta lección

Resuelve los ejercicios del curso de PHP en la app, gratis y con corrección automática.

Empezar a practicar