O Comando SWITCH em PHP
A instrução switch do PHP é muito útil quando temos uma variável (ou resultado de uma expressão) que pode assumir diversos valores, e queremos tratar cada uma dessas possibilidades, de uma maneira mais organizada.
É perfeitamente possível fazer tudo isso com uma porção de IF, ELSE e ELSEIF. Mas o IF só resulta em TRUE ou FALSE, as vezes o resultado que queremos tratar é outro (como um número, uma string etc).
De fato, fizemos isso em nosso tutorial de ELSEIF em PHP, no exemplo dos times de futebol, que vamos refazer usando SWITCH já já.
A declaração do comando switch é:
<?php switch($variavel){ case valor1: [codigo] case valor2: [codigo] case valor3: [codigo] } ?>
Funciona assim...temos que passar algum valor pra switch(), dentro dos parêntesis.
Em seguida, o PHP vai testar esse valor com vários cases, ou seja, vai testar se é igual a valor1, a valor2, a valor3...e onde for igual, ele executa todo o código, somente dali pra baixo.
Exemplo de uso do SWITCH
Crie uma página que pergunta ao usuário que time ele torce, e mostre uma mensagem correspondente:
Corinthians - Vai timão!
Palmeiras - Não tem mundial!
Flamengo - Flamíííídia!
São Paulo - Bambiiii!
Athlético - Hum, Aflético!
Outro - Time pequeno, nem conheço.
Use a instrução SWITCH
Corinthians - Vai timão!
Palmeiras - Não tem mundial!
Flamengo - Flamíííídia!
São Paulo - Bambiiii!
Athlético - Hum, Aflético!
Outro - Time pequeno, nem conheço.
Use a instrução SWITCH
Bom, vamos lá, nosso código fica assim:
<html> <head> <title>Apostila PHP Progressivo</title> </head> <body> <form action="home.php" method="get"> Que time você torce: <input type="text" name="time" /><br /> <input type="submit" name="submit" value="Testar" /> </form> <?php $time = $_GET['time']; switch($time){ case 'Corinthians': echo "Vai Timão!"; case 'Palmeiras': echo "Não tem mundial"; case 'Flamengo': echo "Flamíííídia"; case 'São Paulo': echo "Bambiiis"; case 'Athlético': echo "Huum...aflético"; } ?> </body> </html>
Faça um teste. Escreva, por exemplo, Flamengo, o resultado vai ser:
"FlamíííídiaBambiiisHuum...aflético"
Temos aí dois problemas.
O primeira era que era pra ser só 'Flamíííídia' o resultado, e não tudo isso.
O segundo problema é se outro time for digitado, era pra aparecer "Time pequeno, nem conheço".
Vamos ver como resolver isso.
A instrução break em SWITCH no PHP
Quando definimos para que serve a switch dissemos que ele procura o case correspondente e executa o código DALI EM DIANTE.
Ao digitar 'Flamengo', o PHP acha o case 'Flamengo' no switch, executa seu código e o dos próximos cases.
O que queremos é que seja executado somente o case correto e pare, não execute mais nada.
Para isso, temos que usar a expressão break (quebrar, parar) ao final de cada case.
Veja como fica nosso código com o comando break:
<html> <head> <title>Apostila PHP Progressivo</title> </head> <body> <form action="home.php" method="get"> Que time você torce: <input type="text" name="time" /><br /> <input type="submit" name="submit" value="Testar" /> </form> <?php $time = $_GET['time']; switch($time){ case 'Corinthians': echo "Vai Timão!"; break; case 'Palmeiras': echo "Não tem mundial"; break; case 'Flamengo': echo "Flamíííídia"; break; case 'São Paulo': echo "Bambiiis"; break; case 'Athlético': echo "Huum...aflético"; } ?> </body> </html>
O comando default no SWITCH em PHP
Mas ainda não está completo, nosso código.
E se você digitar outro clube que não está aí, como Ceará ou Paraná, por exemplo?
Era pra aparecer "Não conheço time pequeno"...e aí, criar um case para cada outro clube possível?
Óbvio que não, nem tem como, são muitas opções!
É aí que entra o default.
Tudo que não for tratado/captado por nenhum case, vai cair no default.
Veja como fica nosso código completo, funcionando perfeitamente, com instrução switch e comandos break e default:
<html> <head> <title>Apostila PHP Progressivo</title> </head> <body> <form action="home.php" method="get"> Que time você torce: <input type="text" name="time" /><br /> <input type="submit" name="submit" value="Testar" /> </form> <?php $time = $_GET['time']; switch($time){ case 'Corinthians': echo "Vai Timão!"; break; case 'Palmeiras': echo "Não tem mundial"; break; case 'Flamengo': echo "Flamíííídia"; break; case 'São Paulo': echo "Bambiiis"; break; case 'Athlético': echo "Huum...aflético"; break; default: echo "Não conheço time pequeno"; } ?> </body> </html>
Exercício de Switch
Escreva uma página WEB onde o usuário vai inserir o número correspondente ao mês, ou seja, de 1 até 12 e o PHP vai devolver o nome, por extenso, do mês que o usuário digitou.
Use Switch