Switch Statement
Parte da seção Fundamentos do Journey de PHP da Coddy — lição 32 de 71.
Quando você precisar comparar uma única variável contra muitos valores específicos, a instrução switch oferece uma alternativa mais limpa às longas cadeias de if-elseif.
A instrução switch verifica uma variável uma vez e depois a compara com diferentes valores 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";
}
?>O PHP compara $day com cada case. Quando encontra uma correspondência, executa o código daquele bloco.
A instrução break é crucial — ela instrui o PHP a sair do switch após executar o case correspondente. Sem ela, o PHP continuaria executando todo o código abaixo, mesmo de outros cases.
Observe como sábado e domingo compartilham o mesmo código ao empilhar cases juntos. O default case age como um else — ele é executado quando nenhum outro case corresponde.
<?php
$grade = "B";
switch ($grade) {
case "A":
echo "Excellent!";
break;
case "B":
echo "Good job!";
break;
default:
echo "Keep trying!";
}
?>Use switch ao comparar uma variável contra múltiplos valores exatos. Para condições complexas ou intervalos, use instruções if-elseif.
Desafio
FácilLeia uma string command da entrada representando a cor de um semáforo.
Use uma instrução switch para determinar a ação apropriada com base na cor:
- Se o comando for
red, imprimaStop - Se o comando for
yellow, imprimaSlow down - Se o comando for
green, imprimaGo - Se o comando for
flashing redouflashing yellow, imprimaProceed with caution - Para qualquer outro valor, imprima
Invalid signal
Exemplo:
Se a entrada for green, a saída deve ser:
GoSe a entrada for flashing red, a saída deve ser:
Proceed with cautionSe a entrada for blue, a saída deve ser:
Invalid signalFolha de consulta
A instrução switch fornece uma maneira mais limpa de comparar uma única variável contra múltiplos 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";
}
?>A instrução break sai do switch após executar o caso correspondente. Sem ela, o PHP continua executando o código dos casos subsequentes.
Múltiplos casos podem compartilhar o mesmo código empilhando-os:
<?php
switch ($day) {
case "Saturday":
case "Sunday":
echo "Weekend!";
break;
}
?>O caso default é executado quando nenhum outro caso corresponde, semelhante a uma instrução else.
Use instruções switch para comparar uma variável contra múltiplos valores exatos. Para condições complexas ou intervalos, use instruções if-elseif em vez disso.
Experimente você mesmo
<?php
// Ler entrada
$command = trim(fgets(STDIN));
// TODO: Escreva seu código abaixo usando uma instrução switch
// Determine a ação apropriada com base na cor do semáforo
?>Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições 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