カウントダウンの表示
CoddyのPHPジャーニー「論理とフロー」セクションの一部 — レッスン 64/68。
チャレンジ
簡単3つの入力を受け取ります。イベントの配列を表すJSON文字列、今日の付を表すYYYY-MM-DD形式の日付文字列、そしてカウントダウンを表示するイベント名です。
最初の入力は、次の形式のJSON文字列です:[{"name":"Team Meeting","date":"2024-04-15","location":"Office"},{"name":"Conference","date":"2024-05-20","location":"Convention Center"}]
2番目の入力は、次の形式の日付文字列です:2024-04-01
3番目の入力は、次の形式のイベント名です:Team Meeting
3つの入力をすべて読み込み、JSON文字列をイベントの配列にデコードしてください。提供されたイベント名と一致するイベントを見つけます。今日の付とイベントの日付の両方に対して DateTime オブジェクトを作成します。
イベントの日付と今日の付の差を計算します。今日の DateTime オブジェクトに対して diff() メソッドを使用し、引数としてイベントの DateTime オブジェクトを渡します。これにより DateInterval オブジェクトが返されます。このオブジェクトの days プロパティにアクセスして、2つの日付の間の日数を取得します。
カウントダウンを次の形式で出力してください:
Countdown to [event name]: [number of days] days
配列内にイベントが見つからない場合は、次のように出力してください:Event not found
入力形式:
- 1行目:
name、date、locationをキーに持つイベント配列を表すJSON文字列 - 2行目:今日の付を表すYYYY-MM-DD形式の日付文字列(例:
2024-04-01) - 3行目:カウントダウンを表示するイベント名(例:
Team Meeting)
期待される出力: Countdown to [event name]: [number of days] days という形式のカウントダウン、またはイベントが存在しない場合は Event not found という1行の文字列
自分で試してみよう
<?php
// 入力を読み込む
$jsonString = trim(fgets(STDIN));
$todayDate = trim(fgets(STDIN));
$eventName = trim(fgets(STDIN));
// JSON文字列をイベント配列にデコードする
$events = (array)json_decode($jsonString, true);
// TODO: 以下にコードを記述してください
// 提供されたイベント名に一致するイベントを探す
// 今日の日付とイベントの日付のDateTimeオブジェクトを作成する
// diff()メソッドを使用して差分を計算する
// DateIntervalオブジェクトからdaysプロパティにアクセスする
// 結果を出力する
echo $result;
?>