完了状態によるフィルタリング
CoddyのPHPジャーニー「基礎」セクションの一部 — レッスン 59/71。
チャレンジ
簡単前のレッスンでは、リストからタスクを削除しました。今度は、完了状態でタスクをフィルタリングする機能を追加します。
タスクの説明のための4行の入力を読み込みます(初期の3つのタスクに加えて1つの新しいタスク)。次に5番目の入力として、完了としてマークするタスクのインデックスを表す整数を読み込みます。6番目の入力として、削除するタスクのインデックスを表す整数を読み込みます。最後に7番目の入力として、タスクをフィルタリングするための文字列を読み込み、これはcompletedまたはpendingです。
$todos配列を構築した後、指定されたタスクを完了としてマークし、指定されたインデックスでタスクを削除した後、フィルター入力に基づいて残りのタスクをフィルタリングします:
- フィルターが
completedの場合、"completed"がtrueのタスクのみを表示します - フィルターが
pendingの場合、"completed"がfalseのタスクのみを表示します
残りのタスクをループし、フィルターに一致するもののみを同じ形式で出力します:
- タスクが完了している場合:
- [task description] (Done) - タスクが保留中の場合:
- [task description] (Pending)
一致する各タスクを別々の行に印刷します。
例:
入力がBuy groceries、Walk the dog、Finish homework、Call mom、1、2、およびcompletedの場合、出力は次のようになります:
- Walk the dog (Done)入力がBuy groceries、Walk the dog、Finish homework、Call mom、1、2、および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ループを使用してタスクをイテレートする
// 完了状態に基づいてタスクをフィルタリングするための条件ロジックを使用する
// 必要な形式で結果を表示する
?>基礎のすべてのレッスン
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators