Bora ajudar o programador a transformar café em código?

Mostrando postagens com marcador Quantos dias tem em cada mês. Mostrar todas as postagens
Mostrando postagens com marcador Quantos dias tem em cada mês. Mostrar todas as postagens

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.

Veja também

O melhor PC para programar

O melhor celular para programar