Menu
Coddy logo textTech

Сортировка событий по дате

Часть раздела Логика и управление потоком путешествия по PHP на Coddy — урок 62 из 68.

challenge icon

Задание

Легко

Вы получите два входных значения: строку JSON, представляющую массив событий, и строку с датой в формате YYYY-MM-DD, представляющую сегодняшнюю дату.

Первым входным значением будет строка JSON в следующем формате: [{"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"}]

Вторым входным значением будет строка с датой в формате: 2024-04-01

Прочитайте оба входных значения и декодируйте строку JSON в массив событий. Отфильтруйте события, чтобы включить только предстоящие события (события, дата которых больше или равна сегодняшней дате).

Отсортируйте предстоящие события по дате в порядке возрастания (сначала самая ранняя дата), используя функцию usort() с пользовательской функцией сравнения. Функция сравнения должна сравнивать даты двух событий и возвращать значение, определяющее их порядок.

После сортировки выведите каждое предстоящее событие в следующем формате:

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

Выводите каждое событие на отдельной строке в хронологическом порядке от самой ранней до самой поздней даты.

Формат входных данных:

  • Первая строка: Строка JSON, представляющая массив событий с ключами name, date и location
  • Вторая строка: Строка с датой в формате YYYY-MM-DD, представляющая сегодняшнюю дату (например: 2024-04-01)

Ожидаемый результат: Каждое предстоящее событие, выведенное на отдельной строке в хронологическом порядке в формате: Upcoming: [name] on [date] at [location]

Попробуйте сами

<?php
// Прочитать JSON-строку событий
$eventsJson = fgets(STDIN);
$events = (array)json_decode($eventsJson, true);

// Прочитать сегодняшнюю дату
$todayDate = trim(fgets(STDIN));

// TODO: Напишите свой код ниже
// Отфильтровать предстоящие события (дата >= сегодняшней даты)
// Отсортировать предстоящие события по дате с помощью usort()
// Вывести каждое предстоящее событие в требуемом формате

?>

Все уроки раздела Логика и управление потоком