Menu
CoddyTech

Фильтрация событий по месяцу

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

challenge icon

Задание

Легко

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

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

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

Третьим входным значением будет номер месяца в формате: 4

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

  • Дата события больше или равна сегодняшней дате (только предстоящие события)
  • Событие происходит в указанном месяце

Используйте объекты DateTime для сравнения дат и извлечения месяца из даты каждого события с помощью метода format() с символом формата "n" (который возвращает номер месяца без ведущих нулей).

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

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

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

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

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

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

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

<?php
// Чтение входных данных
$jsonInput = trim(fgets(STDIN));
$todayDate = trim(fgets(STDIN));
$monthNumber = intval(trim(fgets(STDIN)));

// Декодирование JSON в массив
$events = (array)json_decode($jsonInput, true);

// TODO: Напишите свой код ниже
// Фильтрация предстоящих событий в указанном месяце
// Используйте объекты DateTime для сравнения дат
// Вывод каждого подходящего события в требуемом формате

?>

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

Потренируйтесь самостоятельно: Онлайн-компилятор PHP