日付によるイベントのソート
CoddyのPHPジャーニー「論理とフロー」セクションの一部 — レッスン 62/68。
チャレンジ
簡単2つの入力を受け取ります。イベントの配列を表す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"}]
2番目の入力は、次の形式の日付文字列です:2024-04-01
両方の入力を読み込み、JSON文字列をイベントの配列にデコードしてください。イベントをフィルタリングして、今後のイベント(日付が今日の日付以降のイベント)のみを含めます。
カスタム比較関数を用いた usort() を使用して、今後のイベントを日付の昇順(日付の早い順)にソートしてください。比較関数は2つのイベントの日付を比較し、それらの順序を決定する値を返す必要があります。
ソート後、各今後のイベントを次の形式で出力してください:
Upcoming: [name] on [date] at [location]
各イベントを、日付の早い順に1行ずつ出力してください。
入力形式:
- 1行目:
name、date、locationをキーに持つイベント配列を表すJSON文字列 - 2行目:今日の日付を表すYYYY-MM-DD形式の日付文字列(例:
2024-04-01)
期待される出力: 各今後のイベントを、日付順に1行ずつ次の形式で出力します:Upcoming: [name] on [date] at [location]
自分で試してみよう
<?php
// イベントのJSON文字列を読み込む
$eventsJson = fgets(STDIN);
$events = (array)json_decode($eventsJson, true);
// 今日の日付を読み込む
$todayDate = trim(fgets(STDIN));
// TODO: 以下にコードを記述してください
// 今後のイベント(日付 >= 今日の日付)をフィルタリングする
// usort() を使用して今後のイベントを日付順にソートする
// 各今後のイベントを要求された形式で出力する
?>