case
Entenda a palavra-chave "case" no PHP: sintaxe, fall-through, comparação solta e o padrão switch(true) para intervalos.
Como desenvolvedor PHP, você provavelmente já usou a instrução switch para lidar com múltiplas condições no seu código. A palavra-chave case é um componente fundamental da instrução switch, permitindo definir ações específicas a serem executadas com base no valor de uma variável. Esta página aborda a sintaxe do case, como funcionam o fall-through e o break, o problema da comparação solta, o padrão switch (true) para intervalos e como o case se relaciona com cadeias de if/elseif.
Sintaxe
A palavra-chave "case" é usada para definir uma ação específica a ser executada com base no valor de uma variável em uma instrução "switch". Veja a sintaxe básica para usar a palavra-chave "case" em PHP:
A sintaxe PHP do case
<?php
switch ($variable) {
case $value1:
// Code to execute if $variable equals $value1
break;
case $value2:
// Code to execute if $variable equals $value2
break;
default:
// Code to execute if $variable does not equal any of the specified values
}Neste exemplo, a palavra-chave "case" é usada para definir ações específicas a serem executadas com base no valor da variável "$variable". A instrução break é essencial: ela encerra o bloco switch e evita o "fall-through" para o próximo case. Sem ela, o PHP continuará executando o código nos cases subsequentes até encontrar um break ou o fim do bloco switch. Além disso, observe que o switch do PHP usa comparação solta (==) por padrão, o que significa que case 0 também corresponderá a "0" ou false. Use lógica de comparação estrita se for necessário correspondência exata de tipo.
Exemplos
Vejamos alguns exemplos práticos de como a palavra-chave "case" pode ser usada:
Exemplo de case em PHP
<?php
// Example 1
$day = "Monday";
switch ($day) {
case "Monday":
echo "Today is Monday." . PHP_EOL;
break;
case "Tuesday":
echo "Today is Tuesday.";
break;
case "Wednesday":
echo "Today is Wednesday.";
break;
default:
echo "Today is not Monday, Tuesday, or Wednesday.";
}
// Output: Today is Monday.
// Example 2
$grade = 85;
switch (true) {
case $grade >= 90:
echo "A";
break;
case $grade >= 80:
echo "B";
break;
case $grade >= 70:
echo "C";
break;
case $grade >= 60:
echo "D";
break;
default:
echo "F";
}
// Output: BO Exemplo 1 corresponde diretamente a um valor string. O Exemplo 2 usa o padrão switch (true): cada case contém uma expressão boolean, e o primeiro que for avaliado como true é executado. Esta é a forma idiomática de lidar com intervalos em um switch, pois um case simples só compara por igualdade.
Agrupando cases (fall-through intencional)
Como um case sem break passa para o próximo, você pode empilhar rótulos para executar o mesmo bloco para vários valores:
<?php
$day = "Sat";
switch ($day) {
case "Sat":
case "Sun":
echo "Weekend";
break;
default:
echo "Weekday";
}
// Output: WeekendAqui, "Sat" corresponde ao primeiro rótulo, passa pelo case vazio "Sun" e executa o bloco compartilhado. Esta é a única situação em que omitir o break é intencional, e não um erro.
Benefícios
Usar a palavra-chave "case" traz vários benefícios, incluindo:
- Código simplificado: A palavra-chave "case" permite criar código mais curto e conciso, mais fácil de ler e entender.
- Legibilidade melhorada: A instrução "switch" fornece uma estrutura mais limpa do que longas cadeias de instruções "if/elseif" ao comparar uma única variável com múltiplos valores.
- Maior flexibilidade: A palavra-chave "case" permite definir ações específicas com base no valor de uma variável, tornando o código mais adaptável a diferentes cenários.
Conclusão
A palavra-chave case permite definir ações específicas com base no valor de uma variável dentro de uma instrução switch. Lembre-se de duas armadilhas comuns: adicione break a cada case a não ser que você queira um fall-through intencional, e fique atento à comparação solta ao comparar números com strings.
Tópicos relacionados
- Instrução
switchdo PHP — a estrutura completa dentro da qual ocaseexiste. switch— referência da palavra-chaveswitch.- PHP
if...else...elseif— quando uma cadeia de condições é mais legível que umswitch. - Operadores PHP — como as comparações
==(solta) e===(estrita) diferem.