Filtrowanie według statusu ukończenia
Część sekcji Podstawy ścieżki PHP w Coddy. Lekcja 59 z 71.
Wyzwanie
ŁatwyW poprzedniej lekcji usunięto zadanie z listy. Teraz dodaj możliwość filtrowania zadań według ich statusu ukończenia.
Wczytaj cztery wiersze danych wejściowych zawierające opisy zadań (trzy początkowe zadania i jedno nowe zadanie). Następnie wczytaj piątą daną wejściową: liczbę całkowitą reprezentującą indeks zadania, które należy oznaczyć jako ukończone. Wczytaj szóstą daną wejściową: liczbę całkowitą reprezentującą indeks zadania do usunięcia. Na koniec wczytaj siódmą daną wejściową: ciąg znaków, który jest równy completed lub pending i służy do filtrowania zadań.
Po utworzeniu tablicy $todos, oznaczeniu wskazanego zadania jako ukończonego i usunięciu zadania o podanym indeksie przefiltruj pozostałe zadania na podstawie danych wejściowych filtra:
- Jeśli wartością filtra jest
completed, wyświetl tylko zadania, w których"completed"ma wartośćtrue - Jeśli wartością filtra jest
pending, wyświetl tylko zadania, w których"completed"ma wartośćfalse
Przejdź pętlą przez pozostałe zadania i wypisz tylko te, które pasują do filtra, używając tego samego formatu:
- Jeśli zadanie jest ukończone:
- [task description] (Done) - Jeśli zadanie jest oczekujące:
- [task description] (Pending)
Wypisz każde pasujące zadanie w osobnym wierszu.
Przykład:
Jeśli danymi wejściowymi są Buy groceries, Walk the dog, Finish homework, Call mom, 1, 2 i completed, wynikiem powinno być:
- Walk the dog (Done)Jeśli danymi wejściowymi są Buy groceries, Walk the dog, Finish homework, Call mom, 1, 2 i pending, wynikiem powinno być:
- Buy groceries (Pending)
- Call mom (Pending)Spróbuj swoich sił
<?php
// Read three task descriptions
$task1 = trim(fgets(STDIN));
$task2 = trim(fgets(STDIN));
$task3 = trim(fgets(STDIN));
// Read the new task to add
$newTask = trim(fgets(STDIN));
// Read the index of the task to mark as complete
$completeIndex = (int)trim(fgets(STDIN));
// Read the index of the task to remove
$removeIndex = (int)trim(fgets(STDIN));
// Create a $todos array containing three task arrays
// Each task should be an associative array with "task" and "completed" keys
$todos = [
["task" => $task1, "completed" => false],
["task" => $task2, "completed" => false],
["task" => $task3, "completed" => false]
];
// Add the new task to the end of the array
$todos[] = ["task" => $newTask, "completed" => false];
// Mark the task at the specified index as complete
$todos[$completeIndex]["completed"] = true;
// Remove the task at the specified removal index
array_splice($todos, $removeIndex, 1);
// Loop through the array and print each task in the formatted list
foreach ($todos as $todo) {
if ($todo["completed"]) {
echo "- " . $todo["task"] . " (Done)\n";
} else {
echo "- " . $todo["task"] . " (Pending)\n";
}
}
?>Wszystkie lekcje w sekcji Podstawy
4Operatory porównania i logiczne
Operatory porównaniaRówność i tożsamośćOperatory logiczne — część 1Operatory logiczne — część 2Powtórka — prosta logika2Zmienne i typy danych
LiczbyCiągi znaków i cudzysłowyWartości logiczneKonwencje nazewnictwaPodsumowanie — inicjalizacja zmiennychPuste zmienneŁączenie ciągów znakówPobieranie danych od użytkownikaKonwersja na inne typy5Instrukcje warunkowe
Instrukcja ifIf - elseOperator trójargumentowyOperator null coalescingInstrukcja switchPodsumowanie — podejmowanie decyzji3Podstawowe operatory
Operatory arytmetyczneOperator moduloOperator potęgowaniaPrzypisanie złożoneInkrementacja/dekrementacjaPriorytet operatorówPowtórka — proste obliczeniaOperatory łańcuchów znaków6Tablice — część 1: indeksowane
Wprowadzenie do tablicTworzenie tablic indeksowanychDostęp do elementów za pomocą indeksuModyfikowanie elementów za pomocą indeksuRozmiar tablicy za pomocą funkcji countDodawanie elementów do tablicyPodsumowanie — zarządzanie prostą listą9Projekt: Prosta lista zadań
Przegląd projektu i daneDodawanie nowego zadaniaPoćwicz samodzielnie: Kompilator PHP online