Menu
CoddyTech

按日期排序活动

本课属于 Coddy PHP 学习旅程的“逻辑与流程”单元。第 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:在下方编写你的代码
// 筛选即将发生的事件(date >= 今天的日期)
// 使用 usort() 按日期排序即将发生的事件
// 按要求的格式打印每个即将发生的事件

?>

逻辑与流程中的所有课

自己练习: PHP 在线编译器