Список предстоящих событий
Часть раздела Логика и управление потоком путешествия по PHP на Coddy — урок 61 из 68.
Задание
ЛегкоВы получите два входных данных: строку 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 в массив событий. Создайте два объекта DateTime: один для сегодняшней даты (используя второе входное значение) и по одному для даты каждого события при итерации по массиву событий.
Отфильтруйте и отобразите только предстоящие события — события, дата которых больше или равна сегодняшней дате. Для каждого предстоящего события выведите информацию в следующем формате:
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: Напишите свой код ниже
// Создать объект DateTime для сегодняшней даты
// Перебрать события и сравнить даты
// Вывести предстоящие события в требуемом формате
?>Все уроки раздела Логика и управление потоком
1Продвинутые функции
Анонимные функцииЗамыкания и 'use'Стрелочные функцииCallback-функцииИспользование 'call_user_func'Функции переменныхПередача по ссылкеРекурсивные функцииИтоги: ассорти из функций4Многомерные массивы
Создание 2D-массиваДоступ к элементам 2D-массиваИзменение элементов 2D-массиваИтерация с вложенными цикламиДвумерные ассоциативные массивыИтоги: Упражнение «Простая сетка»2Продвинутая работа с массивами
Добавление с помощью 'array_push'Удаление с помощью 'array_pop'Добавление с помощью 'array_unshift'Удаление с помощью 'array_shift'Слияние индексных массивовСлияние ассоциативных массивовИзвлечение с помощью 'array_slice'Поиск значений с 'in_array'Поиск ключей с 'array_search'Итоги: Упражнение «Плейлист»3Сортировка массивов
Сортировка индексных массивов по возрастаниюСортировка индексных массивов по убываниюСортировка ассоциативных массивов по значениюСортировка ассоциативных массивов по ключуСортировка в естественном порядкеПользовательская сортировка с помощью 'usort'Итоги: Сортировка таблицы лидеров6Функции высшего порядка для массивов
Преобразование с помощью 'array_map''array_map' с пользовательской функциейФильтрация с помощью 'array_filter''array_filter' с пользовательской функциейСвертка с помощью 'array_reduce'Обход с помощью 'array_walk'Итоги: Обработка данных9Планировщик событий
Данные событийДобавление нового события