Curso PHP: Switch

Curso PHP: Estructura de control SWITCH…CASE

PHP es un lenguaje de programación menos estricto en algunos aspectos comparado con otros lenguajes de programación. Esto se puede considerar un privilegio, pero, ¿es esto realmente así? La respuesta estrella a cualquier pregunta de informática: Depende. Depende mucho de la organización personal del programador y su capacidad de estructurar el código escrito.

Hay ocasiones en que la desorganización no comporta más que pérdida de elegancia visual del código. Pero, en la mayoría casos, esto comporta también lo que se llama spaguetti code que consiste en tener mucho código relacionado entre sí pero todo patas arriba. Este tipo de código puede ser comprensible por el autor, si es reciente pero imposible de comprender por otros usuarios o includo el propio autor después de un tiempo.

Hoy vamos a ver una forma de estructurar mejor nuestras condicionales para que nuestro código sea elegante, fácil de comprender y también para ahorrarnos dolor de cabeza.

La estructura de control SWITCH…CASE normalmente se utiliza cuando queremos hacer una condicional basado en valores conocidos (total o parcialmente). A continuación vemos un ejemplo de condicional con lo que hemos aprendido en la lección anterior Estructura de control IF…ELSEIF…ELSE:

<?php
$mes = 2;
 
if ($mes == 2){
	echo 'El mes introducido tiene 29 días';
} else if ($mes == 1 or $mes == 4 or $mes == 6 or $mes == 9 or $mes == 11){
	echo 'El mes introducido tiene 30 días';
} else if ($mes == 3 or $mes == 5 or $mes == 7 or $mes == 8 or $mes == 10 or $mes == 12){
	echo 'El mes introducido tiene 31 días';
}else{
	echo 'El mes introducido no es válido';
}

En el ejemplo anterior podemos observar que imprimos por pantalla los días que tiene el mes del a variable $mes. Si nos fijamos, en los “else if” vemos que realmente eso parece una chapuza, y si fuesen otras condiciones se verían aún más repetitivas.

Podemos utilizar la estructura de control SWITCH…CASE para solventar ésto y conseguir que nuestro código se vea lo más claro posible. Para ello, primero vamos a ver la sintaxis:

<?php
$variable = valor;
 
switch($variable){ //Variable que queremos comprobar
	case opcion: //Opción 1
		sentencia; //Sentencia a ejecutar cuando el valor sea igual al de la opción
		break;
	case opcion2: //Opción 2
	case opcion3: //Opción 3
		sentencia; //Sentencia a ejecutar cuando el valor sea igual a opción 2 u opción 3
		break;
	default: //Opción por defecto
		sentencia; //Sentencia a ejecutar cuando el valor no sea igual a ninguna de las opciones anteriores
}
?>

Visto la sintaxis de la estructura de control SWITCH…CASE, vamos a conventir la condicional anterior de IF…ELSE IF…ELSE a SWITCH…CASE de la siguiente manera:

<?php
$mes = 10;
 
switch ($mes) {
	case 2:
		echo 'El mes introducido tiene 29 días';
		break;
	case 1:
	case 4:
	case 6:
	case 9:
	case 11:
		echo 'El mes introducido tiene 30 días';
		break;
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
		echo 'El mes introducido tiene 31 días';
		break;
	default:
		echo 'El mes introducido no es válido';
}
?>

Es cierto que escribimos más líneas, pero no podéis negar que es visualmente más claro y además seguimos los consejos de los gurús de PHP que recomiendan siempre no utilizar muchos bucles anidados y tampoco utilizar muchos operadores lógicos en una misma condición.

Hasta aquí la lección de hoy. Espero que os haya gustado, que hayáis aprendido algo y hasta la próxima 😉

Curso PHP: Estructura de control IF...ELSEIF...ELSE
Curso PHP: Operaciones con cadenas

Publicar un comentario