0Pricing
PHP Academy · Lección

Instrucciones switch y match

Utilice switch y match de PHP 8 para implementar lógica con varias ramas.

Instrucciones switch y match es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 4 lecciones en total.

Switch frente a cadenas de if

Cuando tiene muchas bifurcaciones basadas en el valor de una sola variable, switch resulta más claro que una cadena larga de if/elseif.

PHP 8 introdujo match como una alternativa moderna y estricta.

Conceptos básicos de la instrucción switch

Switch evalúa su expresión una vez y ejecuta el bloque del case correspondiente:

<?php
$day = 'Monday';

switch ($day) {
    case 'Monday':
        echo 'Start of work week';
        break;
    case 'Friday':
        echo 'Almost weekend';
        break;
    default:
        echo 'Midweek';
}

Comportamiento de continuidad entre casos

Sin break, la ejecución continúa en el siguiente case; es un recurso útil para agrupar casos intencionadamente:

<?php
$status = 2;

switch ($status) {
    case 1:
    case 2:
    case 3:
        echo 'In progress';  // runs for 1, 2, or 3
        break;
    case 4:
        echo 'Done';
        break;
}

Switch utiliza una comparación flexible

Switch utiliza internamente == (comparación flexible), lo que puede provocar coincidencias sorprendentes:

<?php
$val = 0;

switch ($val) {
    case 'foo':   // 0 == 'foo' in PHP 7!
        echo 'match foo';
        break;
    case 0:
        echo 'match zero';  // PHP 8 fixes this
        break;
}
// PHP 8: match zero (fixed)
// PHP 7: match foo (bug!)

Expresión match de PHP 8

match es similar a switch, pero utiliza una comparación estricta, devuelve un valor y no requiere break:

<?php
$status = 'active';

$label = match($status) {
    'active'   => 'Currently active',
    'inactive' => 'Not active',
    'pending'  => 'Awaiting activation',
    default    => 'Unknown status',
};

echo $label; // Currently active

match sin coincidencia

Si ningún brazo coincide en match y no hay un default, se produce UnhandledMatchError:

<?php
$code = 99;

try {
    $result = match($code) {
        200 => 'OK',
        404 => 'Not Found',
        500 => 'Server Error',
        // no default!
    };
} catch (\UnhandledMatchError $e) {
    echo 'Unhandled match value: ' . $code;
}

match con varias condiciones

Un solo brazo de match puede incluir varios valores separados por comas:

<?php
$lang = 'tr';

$region = match($lang) {
    'en', 'en-US', 'en-GB' => 'English',
    'tr', 'az'             => 'Turkic',
    'fr', 'be', 'ca'       => 'French-speaking',
    default                => 'Other',
};

echo $region; // Turkic

match con expresiones complejas

Los brazos de match pueden utilizar expresiones arbitrarias en el lado derecho:

<?php
$score = 85;

$grade = match(true) {
    $score >= 90 => 'A',
    $score >= 80 => 'B',  // matches
    $score >= 70 => 'C',
    default      => 'F',
};

echo $grade; // B

return desde match

Como match es una expresión, puede utilizarse en cualquier lugar donde se espere un valor:

<?php
function getHttpMessage(int $code): string {
    return match($code) {
        200 => 'OK',
        201 => 'Created',
        400 => 'Bad Request',
        401 => 'Unauthorized',
        404 => 'Not Found',
        default => 'Unknown',
    };
}

echo getHttpMessage(404); // Not Found

switch en un contexto de return

Puede utilizar switch dentro de una función para devolver valores diferentes, pero match resulta más claro:

<?php
function describe(int $n): string {
    switch (true) {
        case $n < 0:  return 'negative';
        case $n === 0: return 'zero';
        default:       return 'positive';
    }
}

echo describe(-5);  // negative
echo describe(0);   // zero
echo describe(7);   // positive

Cuándo utilizar switch frente a match

Directrices para elegir:

  • Utilice match cuando necesite una comparación estricta y un valor de retorno (PHP 8+)
  • Utilice switch para agrupar casos mediante continuidad o cuando sea compatible con PHP 7
  • Ambos son más claros que las cadenas largas de if/elseif para bifurcaciones con varios valores

Comprobación rápida

¿Qué ocurre en una expresión match cuando ningún brazo coincide y no hay un valor predeterminado?

Resumen: switch y match

Diferencias clave:

  • switch: comparación flexible, continuidad entre casos, PHP 4+
  • match: comparación estricta, sin continuidad entre casos, devuelve un valor, PHP 8+
  • match produce UnhandledMatchError cuando no hay un valor predeterminado
  • Los brazos de match aceptan varios valores separados por comas

A continuación: bucles for y while.

Preguntas frecuentes

¿La lección «Instrucciones switch y match» es gratis?

Sí — el texto completo de «Instrucciones switch y match» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Instrucciones switch y match»?

Utilice switch y match de PHP 8 para implementar lógica con varias ramas. Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar PHP Academy?

No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Instrucciones switch y match»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de PHP Academy?

Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. if, elseif y else
  2. Instrucciones switch y match
  3. Bucles for y while
  4. foreach y control de bucles
← Volver a PHP Academy