Отображение обратного отсчета
Часть раздела Логика и управление потоком путешествия по PHP на Coddy — урок 64 из 68.
Задание
ЛегкоВы получите три входных значения: строку JSON, представляющую массив событий, строку с датой в формате YYYY-MM-DD, представляющую сегодняшнюю дату, и название события, для которого нужно отобразить обратный отсчет.
Первым входным значением будет строка JSON в следующем формате: [{"name":"Team Meeting","date":"2024-04-15","location":"Office"},{"name":"Conference","date":"2024-05-20","location":"Convention Center"}]
Вторым входным значением будет строка с датой в формате: 2024-04-01
Третьим входным значением будет название события в формате: Team Meeting
Прочитайте все три входных значения и декодируйте строку JSON в массив событий. Найдите событие, которое соответствует указанному названию. Создайте объекты DateTime как для сегодняшней даты, так и для даты события.
Вычислите разницу между датой события и сегодняшней датой. Используйте метод diff() для объекта DateTime сегодняшней даты, передав объект DateTime события в качестве параметра. Это вернет объект DateInterval. Обратитесь к свойству days этого объекта, чтобы получить количество дней между двумя датами.
Выведите обратный отсчет в следующем формате:
Countdown to [event name]: [number of days] days
Если событие не найдено в массиве, выведите: Event not found
Формат входных данных:
- Первая строка: Строка JSON, представляющая массив событий с ключами
name,dateиlocation - Вторая строка: Строка с датой в формате YYYY-MM-DD, представляющая сегодняшнюю дату (пример:
2024-04-01) - Третья строка: Название события, для которого нужно отобразить обратный отсчет (пример:
Team Meeting)
Ожидаемый результат: Одна строка, показывающая обратный отсчет в формате: Countdown to [event name]: [number of days] days, или Event not found, если событие не существует
Попробуйте сами
<?php
// Чтение входных данных
$jsonString = trim(fgets(STDIN));
$todayDate = trim(fgets(STDIN));
$eventName = trim(fgets(STDIN));
// Декодирование строки JSON в массив событий
$events = (array)json_decode($jsonString, true);
// TODO: Напишите свой код ниже
// Поиск события, соответствующего указанному названию события
// Создание объектов DateTime для сегодняшней даты и даты события
// Вычисление разницы с помощью метода diff()
// Доступ к свойству days объекта DateInterval
// Вывод результата
echo $result;
?>Все уроки раздела Логика и управление потоком
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Планировщик событий
Данные событийДобавление нового события