Mais exercícios de PHP na Apostila
Exercício - Quantos dias o mês possui
Crie uma página WEB onde o usuário digita números de 1 até 12, representando o mês do ano e seu servidor PHP deve retornar o número de dias que possui nesse mês. Desconsidere os anos bissextos.Sabemos que:
Meses com 31 dias: Janeiro (1), Março (3), Maio (5), Julho (7), Agosto (8), Outubro (10) e Dezembro (12)
Meses com 30 dias: Abril (4), Junho (6), Setembro (9) e Novembro (11)
Meses com 28 dias: Fevereiro (2)
A solução mais óbvia é simples:
case 1:
echo "31 dias";
break;
case 2:
echo "28 dias";
break;
...
case 12:
echo "31 dias";
break;
default:
echo "Mês inexistente";
Porém nosso código ia ficar muito longo e vários cases seriam repetitivos
Script em PHP Otimizado
Lembra que falamos que se não usar o break os cases vão se acumulando?Pois é, podemos nos utilizar dessa funcionalidade para escrever um código melhor, mais limpo, veja:
<html> <head> <title>Apostila PHP Progressivo</title> </head> <body> <form action="" method="get"> Mês: <input type="number" name="month" /><br /> <input type="submit" name="submit" value="Testar" /> </form> <?php $mes = $_GET['month']; switch($mes){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: echo "Mês $mes tem 31 dias"; break; case 4: case 6: case 9: case 11: echo "Mês $mes tem 30 dias"; break; case 2: echo "Mês $mes tem 28 dias"; break; default: echo "Mês inexistente"; } ?> </body> </html>
Script em PHP - Melhor Solução
Não se assuste se você programar scripts grandes, extensos, confusos e longos...e aí vem um filho de uma mãe e resolve com pouquíssimas linhas.Faz parte do aprendizado.
Vamos te mostrar uma maneira bem mais simples e menor de se resolver esse problema.
Usaremos a técnica de acumular novamente.
O número de dias vai ficar armazenado na variável $dias, inicializada com 0.
Primeiro, deixamos o case 2 lá embaixo, perto do default.
No código desse case, somamos 28 a $dias.
Como não usaremos break, sempre essa opção de case 2 vai acontecer, ou seja, sempre somaremos 28 na variável $dias.
Acima dela, vamos adicionar 2, para o resultado dar 30 nos meses 4, 6, 9 e 11.
E bem no começo, adicionamos 1, para dar resultado 31 nos meses restantes.
Veja como fica nosso código lindo e chuchu-beleza:
<html> <head> <title>Apostila PHP Progressivo</title> </head> <body> <form action="" method="get"> Mês de 1 até 12: <input type="number" name="month" /><br /> <input type="submit" name="submit" value="Testar" /> </form> <?php $mes = $_GET['month']; $dias = 0; switch($mes){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: $dias = $dias + 1; case 4: case 6: case 9: case 11: $dias = $dias + 2; case 2: $dias = $dias + 28; } echo "Mês $mes possui $dias dias"; ?> </body> </html>A expressão:
$dias = $dias + x
Significa que o novo valor da variável $dias é o anterior mais x.