Ordenando Eventos por Data
Parte da seção Lógica & Fluxo do Journey de PHP da Coddy — lição 62 de 68.
Desafio
FácilVocê 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,dateelocation - 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
1Funções Avançadas
Funções AnônimasClosures e 'use'Arrow FunctionsFunções de CallbackUsando 'call_user_func'Funções VariáveisPassagem por ReferênciaFunções RecursivasRecapitulação: Mix de Funções4Arrays Multidimensionais
Criando um Array 2DAcessando Elementos de um Array 2DModificando Elementos de um Array 2DIterando com Loops AninhadosArrays Associativos 2DRecapitulação: Exercício de Grade Simples2Manipulações Avançadas de Arrays
Adicionando com 'array_push'Removendo com 'array_pop'Adicionando com 'array_unshift'Removendo com 'array_shift'Mesclando Arrays IndexadosMesclando Arrays AssociativosExtraindo com 'array_slice'Valores com 'in_array'Chaves com 'array_search'Recapitulação: Exercício de Playlist3Ordenação de Arrays
Ordenar Arrays Indexados (Crescente)Ordenar Arrays Indexados (Decrescente)Ordenar Arrays Associativos por ValorOrdenar Arrays Associativos por ChaveOrdenação por Ordem NaturalOrdenação Personalizada com 'usort'Recapitulação: Ordenação de Leaderboard6Funções de Ordem Superior para Arrays
Transformando com 'array_map''array_map' com Funções PersonalizadasFiltrando com 'array_filter''array_filter' com Funções PersonalizadasReduzindo com 'array_reduce'Percorrendo com 'array_walk'Recapitulação: Processamento de Dados9Agendador de Eventos
Dados do EventoAdicionando um Novo Evento