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"
};
Practica esta lección
Resuelve los ejercicios del curso de PHP en la app, gratis y con corrección automática.
Empezar a practicar