סינון לפי מצב ההשלמה
חלק מהיחידה יסודות במסלול ה-PHP של Coddy. שיעור 59 מתוך 71.
אתגר
קלבשיעור הקודם הסרת משימה מהרשימה. עכשיו הוסף את האפשרות לסנן משימות לפי סטטוס ההשלמה שלהן.
קרא ארבע שורות קלט עבור תיאורי המשימות (שלוש משימות ראשוניות ועוד משימה חדשה אחת). לאחר מכן קרא קלט חמישי: מספר שלם שמייצג את האינדקס של המשימה שיש לסמן כהושלמה. קרא קלט שישי: מספר שלם שמייצג את האינדקס של המשימה שיש להסיר. לבסוף, קרא קלט שביעי: מחרוזת שהיא 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
// 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";
}
}
?>כל השיעורים ביחידה יסודות
4אופרטורי השוואה ולוגיקה
אופרטורי השוואהשוויון וזהותאופרטורים לוגיים — חלק 1אופרטורים לוגיים — חלק 2סיכום — לוגיקה פשוטה2משתנים וסוגי נתונים
מספריםמחרוזות ומירכאותערכים בוליאנייםכללי מתן שמותסיכום – אתחול משתניםמשתנים ריקיםשרשור מחרוזותקבלת קלט מהמשתמשהמרה לסוגים שונים3אופרטורים בסיסיים
אופרטורים אריתמטייםאופרטור מודולואופרטור חזקההשמה משולבתהגדלה והקטנהקדימות אופרטוריםסיכום — חישובים פשוטיםאופרטורים למחרוזות6מערכים חלק 1 – ממוספרים באינדקס
מבוא למערכיםיצירת מערכים ממוספרים באינדקסגישה לאיברים לפי אינדקסשינוי איברים לפי אינדקסגודל המערך באמצעות Countהוספת איברים למערךסיכום – ניהול רשימה פשוטה9פרויקט: רשימת משימות פשוטה
סקירת הפרויקט והנתוניםהוספת משימה חדשהתרגלו בעצמכם: קומפיילר PHP אונליין