Menu
Coddy logo textTech

Ordenando Eventos por Data

Parte da seção Lógica & Fluxo do Journey de PHP da Coddy — lição 62 de 68.

challenge icon

Desafio

Fácil

Você receberá duas entradas: uma string JSON representando um array de eventos e uma string de data no formato YYYY-MM-DD representando a data de hoje.

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-03-10","location":"Library"}]

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

Leia ambas as entradas e decodifique a string JSON em um array de eventos. Filtre os eventos para incluir apenas os eventos futuros (eventos cuja data seja maior ou igual à data de hoje).

Ordene os eventos futuros por sua data em ordem crescente (data mais próxima primeiro) usando usort() com uma função de comparação personalizada. A função de comparação deve comparar as datas de dois eventos e retornar um valor que determine sua ordem.

Após a ordenação, imprima cada evento futuro no seguinte formato:

Upcoming: [name] on [date] at [location]

Imprima cada evento em uma linha separada, em ordem cronológica da data mais antiga para a mais recente.

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)

Saída esperada: Cada evento futuro impresso em uma linha separada em ordem cronológica no formato: Upcoming: [name] on [date] at [location]

Experimente você mesmo

<?php
// Lê a string JSON de eventos
$eventsJson = fgets(STDIN);
$events = (array)json_decode($eventsJson, true);

// Lê a data de hoje
$todayDate = trim(fgets(STDIN));

// TODO: Escreva seu código abaixo
// Filtra eventos futuros (data >= data de hoje)
// Ordena os eventos futuros por data usando usort()
// Imprime cada evento futuro no formato exigido

?>

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