Advertisement
  1. Code
  2. PHP

Uso de la instrucción switch de PHP

Scroll to top
Read Time: 6 min

Spanish (Español) translation by Ana Paulina Figueroa (you can also view the original English article)

En este artículo, discutiremos los conceptos básicos de la instrucción switch en PHP. Junto con la sintaxis de la instrucción switch, también analizaremos un par de ejemplos reales para demostrar de qué manera puedes usarla.

¿Cuál es el uso de la instrucción switch?

En PHP, la instrucción switch se considera una alternativa a las instrucciones if-elseif-else. La mayoría de las veces quieres comparar diferentes valores con una variable y ejecutar una pieza de código en base a eso. Lo primero que te viene a la mente es implementar una serie de instrucciones if-elseif-else para lograrlo, como se muestra en el siguiente fragmento de código.

1
if ($favorite_site == 'Design') {
2
    echo "Your favorite site is design.tutsplus.com!";
3
} elseif ($favorite_site == 'Code') {
4
    echo "Your favorite site is code.tutsplus.com!";
5
} elseif ($favorite_site == 'Business') {
6
    echo "Your favorite site is business.tutsplus.com!";
7
}

Si solamente es cuestión de dos o tres condiciones, es adecuado hacer la implementación con las instrucciones if-elseif-else. Pero si necesitas trabajar con varias condiciones, y si haces la implementación con las instrucciones if-elseif-else, el código se vuelve realmente largo y es difícil de gestionar. En esos casos lo ideal es usar la instrucción switch, y eso es exactamente para lo que está diseñada.

Antes de continuar y discutir la instrucción switch a detalle, veamos rápidamente cómo se ve el ejemplo anterior con dicha instrucción.

1
switch ($favorite_site) {
2
    case 'Design':
3
        echo "Your favorite site is design.tutsplus.com!";
4
        break;
5
    case 'Code':
6
        echo "Your favorite site is code.tutsplus.com!";
7
        break;
8
    case 'Business':
9
        echo "Your favorite site is business.tutsplus.com!";
10
        break;
11
}

¿No se ve mucho más compacto y ordenado? Por lo tanto, la instrucción switch es realmente útil cuando se trata de trabajar con múltiples condiciones en tu código.

Sintaxis y ejemplos

En esta sección, analizaremos la sintaxis de la instrucción switch y un par de ejemplos reales para demostrar cómo puedes usarla en tu desarrollo cotidiano con PHP.

Sintaxis

Analicemos la sintaxis de la instrucción switch.

1
switch (expression)
2
{
3
  case value1:
4
    // code to be executed if expression equals to value1

5
    break;
6
  case value2:
7
    // code to be executed if expression equals to value2

8
    break;
9
  case value3:
10
    // code to be executed if expression equals to value3

11
    break;
12
    ...
13
    ...
14
  default:
15
    // code to be executed if no cases are matched

16
}

El proceso comienza con la expresión en la instrucción switch. En primer lugar se evalúa la expresión, y la salida de esta última se compara con todos los casos en secuencia hasta que haya una coincidencia. Si hay una coincidencia, se ejecuta el código asociado con ese caso en particular. Si no hay coincidencia, y si hay un caso default disponible, la instrucción ejecutará ese código.

Es importante que no olvides la instrucción break en cada caso. Si un caso coincide, y este no tiene una instrucción break, el código de todos los siguientes casos será ejecutado aún cuando no coincidan los valores de cada caso.

Revisemos el siguiente ejemplo para comprender la importancia de la instrucción break.

1
<?php
2
$favorite_site = 'Code';
3
switch ($favorite_site) {
4
    case 'Design':
5
        echo "Your favorite site is design.tutsplus.com!";
6
        break;
7
    case 'Code':
8
        echo "Your favorite site is code.tutsplus.com!";
9
    case 'Business':
10
        echo "Your favorite site is business.tutsplus.com!";
11
        break;
12
}
13
?>

Si piensas que solamente mostraría Your favorite site is code.tutsplus.com! (¡Tu sitio favorito es code.tutsplus.com!), ¡estás equivocado! Lo que mostraría sería lo siguiente:

1
Your favorite site is code.tutsplus.com!
2
Your favorite site is business.tutsplus.com!

Esto se debe a que no has incluido la instrucción break en el segundo caso y, por lo tanto, PHP ejecutaría el código de todos los siguientes casos, independientemente del valor de la variable $favorite_site. Así que nunca debes olvidar la instrucción break al usar la instrucción switch en tu código.

Finalmente, el caso default es opcional; no es obligatorio proporcionarlo. Su propósito es brindar el código predeterminado que se ejecuta si el valor de la expresión no coincide con ningún caso.

Así que esa es la sintaxis de la instrucción switch. En la siguiente sección veremos un par de ejemplos reales.

Ejemplos

Ahora estás familiarizado con la sintaxis de la instrucción switch y, en la sección anterior, ya has analizado un par de ejemplos básicos. En esta sección analizaremos un par de ejemplos avanzados de la instrucción switch.

Múltiples casos para el mismo bloque de código

Revisemos el siguiente ejemplo.

1
<?php
2
switch ($favorite_site)
3
{
4
    case 'Design':
5
    case 'Code':
6
    case 'Business':
7
            echo "It's great to see that you love one of our tutsplus group of websites!";
8
            break;
9
    default:
10
            echo "You would like to explore tutsplus.com, we're sure you would love it!";
11
}
12
?>

En algunas ocasiones quieres ejecutar la misma pieza de código para diferentes casos. El ejemplo anterior lo demuestra. En él, si el valor de la variable $favorite_site es 'Design' o 'Code' o 'Business', la instrucción ejecutaría el mismo código para todos estos tres casos. De lo contrario, ejecutaría el código asociado con el caso predeterminado.

Expresión en las instrucciones switch

En los ejemplos que hemos discutido hasta ahora, hemos usado una variable en la instrucción switch. De hecho, la instrucción switch te permite usar una expresión también.

Veamos cómo puedes usar una expresión en la instrucción switch, como se muestra en el siguiente ejemplo.

1
<?php
2
switch (date("N", time()))
3
{
4
    case 0:
5
        echo 'Sunday';
6
        break;
7
    case 1:
8
        echo 'Monday';
9
        break;
10
    case 2:
11
        echo 'Tuesday';
12
        break;
13
    case 3:
14
        echo 'Wednesday';
15
        break;
16
    case 4:
17
        echo 'Thursday';
18
        break;
19
    case 5:
20
        echo 'Friday';
21
        break;
22
    case 6:
23
        echo 'Saturday';
24
        break;
25
}
26
?>

Primero, PHP evalúa la expresión en la instrucción switch, y la salida de esa expresión se compara con todos los casos. En este ejemplo, la instrucción muestra el día actual de la semana.

Instrucciones switch anidadas

Finalmente, también puedes anidar las instrucciones switch. Veamos de qué manera funciona esto con el siguiente ejemplo.

1
<?php
2
switch( $type )
3
{
4
    case "Courses":
5
        switch( $category )
6
        {
7
            case "Code":
8
                   echo "Visit https://code.tutsplus.com/courses!";
9
                break;
10
            case "Web Design":
11
                   echo "Visit https://webdesign.tutsplus.com/courses!";
12
                break;
13
        }
14
        break;
15
    case "Tutorials":
16
        switch( $category )
17
        {
18
            case "Code":
19
                echo "Visit https://code.tutsplus.com/tutorials!";
20
                break;
21
            case "Business":
22
                echo "Visit https://business.tutsplus.com/tutorials!";
23
                break;
24
        }
25
        break;
26
    case "Guides":
27
        switch( $category )
28
        {
29
            case "Code":
30
                echo "Visit https://code.tutsplus.com/series!";
31
                break;
32
            case "Business":
33
                echo "Visit https://business.tutsplus.com/series!";
34
                break;
35
        }
36
        break;  
37
}
38
?>

Como puedes ver, es perfectamente válido usar una instrucción switch dentro de otra instrucción switch. Sin embargo, lo conveniente es que intentes evitar esto, ya que ocasiona que tu código sea más difícil de leer y gestionar.

Conclusión

Hoy discutimos cómo puedes usar la instrucción switch en PHP. Es una característica realmente útil del lenguaje, que te permite simplificar instrucciones if-elseif-else extensas y mantiene la claridad y la legibilidad de tu código.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.