Menu
CoddyTech

Filtrando Eventos por Mês

Parte da seção Lógica & Fluxo do Journey de PHP da Coddy. Lição 63 de 68.

challenge icon

Desafio

Fácil

Você receberá três entradas: uma string JSON representando um array de eventos, uma string de data no formato YYYY-MM-DD representando a data de hoje e um número de mês (1-12) para filtrar.

A primeira entrada será uma string JSON neste formato: [{"name":"Team Meeting","date":"2024-04-15","location":"Office"},{"name":"Conference","date":"2024-05-20","location":"Convention Center"},{"name":"Workshop","date":"2024-04-25","location":"Library"}]

A segunda entrada será uma string de data neste formato: 2024-04-01

A terceira entrada será um número de mês neste formato: 4

Leia as três entradas e decodifique a string JSON em um array de eventos. Filtre os eventos para incluir apenas aqueles que atendam a ambas as condições:

  • A data do evento é maior ou igual à data de hoje (apenas eventos futuros)
  • O evento ocorre no mês especificado

Use objetos DateTime para comparar datas e extrair o mês da data de cada evento usando o método format() com o caractere de formato "n" (que retorna o mês como um número sem zeros à esquerda).

Após filtrar, imprima cada evento correspondente no seguinte formato:

Event in month [month]: [name] on [date] at [location]

Imprima cada evento em uma linha separada, na ordem em que aparecem no array. Se nenhum evento corresponder a ambos os critérios, não imprima nada.

Formato de entrada:

  • Primeira linha: Uma string JSON representando o array de eventos com as chaves name, date e location
  • Segunda linha: Uma string de data no formato YYYY-MM-DD representando a data de hoje (exemplo: 2024-04-01)
  • Terceira linha: Um número de mês de 1 a 12 (exemplo: 4 para Abril)

Saída esperada: Cada evento que seja futuro e esteja no mês especificado, impresso em uma linha separada no formato: Event in month [month]: [name] on [date] at [location]

Experimente você mesmo

<?php
// Ler entradas
$jsonInput = trim(fgets(STDIN));
$todayDate = trim(fgets(STDIN));
$monthNumber = intval(trim(fgets(STDIN)));

// Decodificar JSON em um array
$events = (array)json_decode($jsonInput, true);

// TODO: Escreva seu código abaixo
// Filtrar eventos que estão por vir e no mês especificado
// Usar objetos DateTime para comparar datas
// Imprimir cada evento correspondente no formato exigido

?>

Todas as lições de Lógica & Fluxo

Pratique por conta própria: Compilador de PHP online