Menu
Coddy logo textTech

完了状態によるフィルタリング

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

challenge icon

チャレンジ

簡単

前のレッスンでは、リストからタスクを削除しました。今度は、完了状態でタスクをフィルタリングする機能を追加します。

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

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

  • フィルターがcompletedの場合、"completed"trueのタスクのみを表示します
  • フィルターがpendingの場合、"completed"falseのタスクのみを表示します

残りのタスクをループし、フィルターに一致するもののみを同じ形式で出力します:

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

一致する各タスクを別々の行に印刷します。

例:

入力がBuy groceriesWalk the dogFinish homeworkCall mom12、およびcompletedの場合、出力は次のようになります:

- Walk the dog (Done)

入力がBuy groceriesWalk the dogFinish homeworkCall mom12、およびpendingの場合、出力は次のようになります:

- Buy groceries (Pending)
- Call mom (Pending)

自分で試してみよう

<?php
// 事前に定義されたタスクコレクション
$tasks = [
    [
        "description" => "Buy groceries",
        "completed" => false
    ],
    [
        "description" => "Walk the dog", 
        "completed" => true
    ],
    [
        "description" => "Read a book",
        "completed" => false
    ],
    [
        "description" => "Exercise",
        "completed" => true
    ],
    [
        "description" => "Clean house",
        "completed" => false
    ],
    [
        "description" => "Call mom",
        "completed" => true
    ]
];

// フィルタタイプの入力を読み取る
$filterType = trim(fgets(STDIN));

// TODO: ここにコードを書く
// foreachループを使用してタスクをイテレートする
// 完了状態に基づいてタスクをフィルタリングするための条件ロジックを使用する
// 必要な形式で結果を表示する

?>

基礎のすべてのレッスン