Neste
tutorial de PHP, vamos criar um script que diz quantos dias o mês possui, usando apenas lógica de programação e o
comando SWITCH.
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.