Menu
Coddy logo textTech

空のリスト状態の処理

CoddyのPHPジャーニー「基礎」セクションの一部 — レッスン 60/71。

challenge icon

チャレンジ

簡単

前のレッスンでは、タスクを完了状態でフィルタリングしました。今度は、フィルタリング結果が空の場合の処理を追加します。

タスク記述のための4行の入力を読み込みます(初期の3つのタスクに加えて1つの新しいタスク)。次に5番目の入力として、完了としてマークするタスクのインデックスを表す整数を読み込みます。6番目の入力として、削除するタスクのインデックスを表す整数を読み込みます。最後に7番目の入力として、タスクをフィルタリングするための文字列を読み込みます。これは completed または pending です。

$todos 配列を構築した後、指定されたタスクを完了としてマークし、指定されたインデックスのタスクを削除した後、フィルター入力に基づいて残りのタスクをフィルタリングします。

フィルタリングされたタスクを表示する前に、フィルターに一致するタスクがあるかどうかを確認します:

  • フィルターに一致するタスクがない場合、印刷します: No [filter] tasks found. (ここで [filter]completed または pending です)
  • フィルターに一致するタスクがある場合、前のと同じ形式で表示します

一致するタスクの出力形式:

  • タスクが完了している場合: - [task description] (Done)
  • タスクが保留中の場合: - [task description] (Pending)

例 1:

入力が Buy groceries, Walk the dog, Finish homework, Call mom, 1, 1, および completed の場合、出力は次のようになります:

No completed tasks found.

例 2:

入力が Buy groceries, Walk the dog, Finish homework, Call mom, 0, 2, および completed の場合、出力は次のようになります:

- Buy groceries (Done)

例 3:

入力が Buy groceries, Walk the dog, Finish homework, Call mom, 0, 1, および pending の場合、出力は次のようになります:

- Finish homework (Pending)
- Call mom (Pending)

自分で試してみよう

<?php
// 入力を読み取る
$input = trim(fgets(STDIN));

// 入力に基づいてタスクのコレクションを初期化
if ($input == "empty") {
    $tasks = [];
} else {
    $tasks = [
        [
            "description" => "Buy groceries",
            "completed" => false
        ],
        [
            "description" => "Walk the dog", 
            "completed" => true
        ]
    ];
}

// TODO: ここにコードを書く
// count() 関数を使ってタスク配列が空かどうかをチェック
// タスクが空の場合とそうでない場合に適切なメッセージを表示
// 集計情報を計算して表示
?>

基礎のすべてのレッスン