Switch Statement
Parte de la sección Fundamentos del Journey de PHP de Coddy — lección 32 de 71.
Cuando necesites comparar una sola variable con muchos valores específicos, la sentencia switch ofrece una alternativa más limpia a las cadenas largas de if-elseif.
La sentencia switch verifica una variable una vez y luego la compara con diferentes valores de case:
<?php
$day = "Monday";
switch ($day) {
case "Monday":
echo "Start of the week";
break;
case "Friday":
echo "Almost weekend";
break;
case "Saturday":
case "Sunday":
echo "Weekend!";
break;
default:
echo "Regular day";
}
?>PHP compara $day con cada case. Cuando encuentra una coincidencia, ejecuta el código de ese bloque.
La sentencia break es crucial: le indica a PHP que salga del switch después de ejecutar el case coincidente. Sin ella, PHP continuaría ejecutando todo el código subsiguiente, incluso de otros cases.
Observa cómo sábado y domingo comparten el mismo código al apilar casos juntos. El caso default actúa como un else: se ejecuta cuando ningún otro caso coincide.
<?php
$grade = "B";
switch ($grade) {
case "A":
echo "Excellent!";
break;
case "B":
echo "Good job!";
break;
default:
echo "Keep trying!";
}
?>Usa switch cuando compares una variable contra múltiples valores exactos. Para condiciones complejas o rangos, quédate con las sentencias if-elseif.
Desafío
FácilLee una cadena command desde la entrada que representa un color de semáforo.
Usa una sentencia switch para determinar la acción apropiada según el color:
- Si el comando es
red, imprimeStop - Si el comando es
yellow, imprimeSlow down - Si el comando es
green, imprimeGo - Si el comando es
flashing redoflashing yellow, imprimeProceed with caution - Para cualquier otro valor, imprime
Invalid signal
Ejemplo:
Si la entrada es green, la salida debería ser:
GoSi la entrada es flashing red, la salida debería ser:
Proceed with cautionSi la entrada es blue, la salida debería ser:
Invalid signalHoja de referencia
La sentencia switch proporciona una forma más limpia de comparar una sola variable contra múltiples valores específicos:
<?php
$day = "Monday";
switch ($day) {
case "Monday":
echo "Start of the week";
break;
case "Friday":
echo "Almost weekend";
break;
default:
echo "Regular day";
}
?>La sentencia break sale del switch después de ejecutar el caso coincidente. Sin ella, PHP continúa ejecutando el código de los casos subsiguientes.
Múltiples casos pueden compartir el mismo código apilándolos:
<?php
switch ($day) {
case "Saturday":
case "Sunday":
echo "Weekend!";
break;
}
?>El caso default se ejecuta cuando ningún otro caso coincide, similar a una sentencia else.
Utilice sentencias switch para comparar una variable contra múltiples valores exactos. Para condiciones complejas o rangos, utilice sentencias if-elseif en su lugar.
Pruébalo tú mismo
<?php
// Leer entrada
$command = trim(fgets(STDIN));
// TODO: Escribe tu código debajo usando una sentencia switch
// Determina la acción apropiada basada en el color del semáforo
?>Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators