Gostou do nosso conteúdo? Te ajudou?
Nos ajude também! Faça um PIX, de qualquer valor:
programacao.progressiva@gmail.com

Quantos Dias Possui o Mês (Script PHP)

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.