טיפול במקרים של רשימה ריקה
חלק מהיחידה יסודות במסלול ה-PHP של Coddy. שיעור 60 מתוך 71.
אתגר
קלבשיעור הקודם סיננת משימות לפי מצב ההשלמה שלהן. עכשיו, הוסף טיפול במקרים שבהם התוצאה המסוננת ריקה.
קרא ארבע שורות קלט עם תיאורי משימות (שלוש משימות התחלתיות ועוד משימה חדשה אחת). לאחר מכן קרא קלט חמישי: מספר שלם שמייצג את האינדקס של המשימה שיש לסמן כהושלמה. קרא קלט שישי: מספר שלם שמייצג את האינדקס של המשימה שיש להסיר. לבסוף, קרא קלט שביעי: מחרוזת שהיא 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
// 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));
// Read the filter type (completed or pending)
$filter = 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 that matches the filter
foreach ($todos as $todo) {
if ($filter === "completed" && $todo["completed"]) {
echo "- " . $todo["task"] . " (Done)\n";
} elseif ($filter === "pending" && !$todo["completed"]) {
echo "- " . $todo["task"] . " (Pending)\n";
}
}
?>כל השיעורים ביחידה יסודות
4אופרטורי השוואה ולוגיקה
אופרטורי השוואהשוויון וזהותאופרטורים לוגיים — חלק 1אופרטורים לוגיים — חלק 2סיכום — לוגיקה פשוטה2משתנים וסוגי נתונים
מספריםמחרוזות ומירכאותערכים בוליאנייםכללי מתן שמותסיכום – אתחול משתניםמשתנים ריקיםשרשור מחרוזותקבלת קלט מהמשתמשהמרה לסוגים שונים3אופרטורים בסיסיים
אופרטורים אריתמטייםאופרטור מודולואופרטור חזקההשמה משולבתהגדלה והקטנהקדימות אופרטוריםסיכום — חישובים פשוטיםאופרטורים למחרוזות6מערכים חלק 1 – ממוספרים באינדקס
מבוא למערכיםיצירת מערכים ממוספרים באינדקסגישה לאיברים לפי אינדקסשינוי איברים לפי אינדקסגודל המערך באמצעות Countהוספת איברים למערךסיכום – ניהול רשימה פשוטה9פרויקט: רשימת משימות פשוטה
סקירת הפרויקט והנתוניםהוספת משימה חדשהתרגלו בעצמכם: קומפיילר PHP אונליין