Ordenar eventos por fecha
Parte de la sección Lógica y Flujo del Journey de PHP de Coddy — lección 62 de 68.
Desafío
FácilRecibirás dos entradas: una cadena JSON que representa un arreglo de eventos y una cadena de fecha en formato YYYY-MM-DD que representa la fecha de hoy.
La primera entrada será una cadena JSON en este 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"}]
La segunda entrada será una cadena de fecha en este formato: 2024-04-01
Lee ambas entradas y decodifica la cadena JSON en un arreglo de eventos. Filtra los eventos para incluir solo los eventos próximos (eventos cuya fecha sea mayor o igual a la fecha de hoy).
Ordena los eventos próximos por su fecha en orden ascendente (la fecha más temprana primero) usando usort() con una función de comparación personalizada. La función de comparación debe comparar las fechas de dos eventos y devolver un valor que determine su orden.
Después de ordenar, imprime cada evento próximo en el siguiente formato:
Upcoming: [name] on [date] at [location]
Imprime cada evento en una línea separada, en orden cronológico desde la fecha más temprana hasta la más tardía.
Formato de entrada:
- Primera línea: Una cadena JSON que representa el arreglo de eventos con las claves
name,dateylocation - Segunda línea: Una cadena de fecha en formato YYYY-MM-DD que representa la fecha de hoy (ejemplo:
2024-04-01)
Salida esperada: Cada evento próximo impreso en una línea separada en orden cronológico en el formato: Upcoming: [name] on [date] at [location]
Pruébalo tú mismo
<?php
// Leer la cadena JSON de eventos
$eventsJson = fgets(STDIN);
$events = (array)json_decode($eventsJson, true);
// Leer la fecha de hoy
$todayDate = trim(fgets(STDIN));
// TODO: Escribe tu código a continuación
// Filtrar eventos próximos (fecha >= fecha de hoy)
// Ordenar los eventos próximos por fecha usando usort()
// Imprimir cada evento próximo en el formato requerido
?>Todas las lecciones de Lógica y Flujo
1Funciones avanzadas
Funciones anónimasClosures y 'use'Funciones de flechaFunciones callbackUso de 'call_user_func'Funciones variablesPaso por referenciaFunciones recursivasResumen: Miscelánea de funciones4Arreglos multidimensionales
Crear un arreglo 2DAcceder a elementos de un arreglo 2DModificar elementos de un arreglo 2DIterar con bucles anidadosArreglos asociativos 2DResumen: Ejercicio de cuadrícula simple2Manipulación avanzada de arrays
Agregar con 'array_push'Eliminar con 'array_pop'Agregar con 'array_unshift'Eliminar con 'array_shift'Fusionar arrays indexadosFusionar arrays asociativosExtraer con 'array_slice'Valores con 'in_array'Claves con 'array_search'Resumen: Ejercicio de Playlist3Ordenar Arrays
Ordenar arrays indexados de forma ascendenteOrdenar arrays indexados de forma descendenteOrdenar arrays asociativos por valorOrdenar arrays asociativos por claveOrdenación por orden naturalOrdenación personalizada con 'usort'Resumen: Ordenar tablas de clasificación6Funciones de array de orden superior
Transformación con 'array_map''array_map' con funciones personalizadasFiltrado con 'array_filter''array_filter' con funciones personalizadasReducción con 'array_reduce'Recorrido con 'array_walk'Resumen: Procesamiento de datos9Planificador de eventos
Datos del eventoAgregar un nuevo evento