空のリスト状態の処理
CoddyのPHPジャーニー「基礎」セクションの一部 — レッスン 60/71。
チャレンジ
簡単前のレッスンでは、タスクを完了状態でフィルタリングしました。今度は、フィルタリング結果が空の場合の処理を追加します。
タスク記述のための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() 関数を使ってタスク配列が空かどうかをチェック
// タスクが空の場合とそうでない場合に適切なメッセージを表示
// 集計情報を計算して表示
?>基礎のすべてのレッスン
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