Xử lý trường hợp danh sách trống
Thuộc phần Kiến thức cơ bản trong hành trình PHP của Coddy. Bài học 60 trên 71.
Thử thách
DễTrong bài học trước, bạn đã lọc các nhiệm vụ theo trạng thái hoàn thành. Bây giờ, hãy xử lý trường hợp kết quả lọc trống.
Đọc bốn dòng đầu vào mô tả nhiệm vụ (ba nhiệm vụ ban đầu và một nhiệm vụ mới). Sau đó, đọc đầu vào thứ năm: một số nguyên biểu thị chỉ số của nhiệm vụ cần đánh dấu là đã hoàn thành. Đọc đầu vào thứ sáu: một số nguyên biểu thị chỉ số của nhiệm vụ cần xóa. Cuối cùng, đọc đầu vào thứ bảy: một chuỗi có giá trị là completed hoặc pending để lọc các nhiệm vụ.
Sau khi tạo mảng $todos, đánh dấu nhiệm vụ được chỉ định là đã hoàn thành và xóa nhiệm vụ tại chỉ số đã cho, hãy lọc các nhiệm vụ còn lại dựa trên đầu vào bộ lọc.
Trước khi hiển thị các nhiệm vụ đã lọc, hãy kiểm tra xem có nhiệm vụ nào khớp với bộ lọc hay không:
- Nếu không có nhiệm vụ nào khớp với bộ lọc, hãy in ra:
No [filter] tasks found.(trong đó[filter]làcompletedhoặcpending) - Nếu có nhiệm vụ khớp với bộ lọc, hãy hiển thị chúng theo cùng định dạng như trước
Định dạng đầu ra cho các nhiệm vụ khớp:
- Nếu nhiệm vụ đã hoàn thành:
- [task description] (Done) - Nếu nhiệm vụ đang chờ:
- [task description] (Pending)
Ví dụ 1:
Nếu đầu vào là Buy groceries, Walk the dog, Finish homework, Call mom, 1, 1 và completed, đầu ra sẽ là:
No completed tasks found.Ví dụ 2:
Nếu đầu vào là Buy groceries, Walk the dog, Finish homework, Call mom, 0, 2 và completed, đầu ra sẽ là:
- Buy groceries (Done)Ví dụ 3:
Nếu đầu vào là Buy groceries, Walk the dog, Finish homework, Call mom, 0, 1 và pending, đầu ra sẽ là:
- Finish homework (Pending)
- Call mom (Pending)Tự làm thử
<?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";
}
}
?>Tất cả bài học trong Kiến thức cơ bản
4Toán tử so sánh và logic
Toán tử so sánhBằng nhau và đồng nhấtToán tử logic phần 1Toán tử logic phần 2Ôn tập: logic đơn giản2Biến và kiểu dữ liệu
SốChuỗi và dấu ngoặc képGiá trị BooleanQuy ước đặt tênÔn tập: khởi tạo biếnBiến rỗngNối chuỗiNhận đầu vào từ người dùngChuyển đổi sang kiểu dữ liệu khác5Logic điều kiện
Câu lệnh ifIf và elseToán tử ba ngôiToán tử kết hợp nullCâu lệnh switchÔn tập: đưa ra quyết định3Các toán tử cơ bản
Toán tử số họcToán tử chia lấy dưToán tử lũy thừaPhép gán kết hợpTăng/giảmThứ tự ưu tiên của toán tửÔn tập: phép tính đơn giảnToán tử chuỗi6Mảng phần 1: Có chỉ số
Giới thiệu về mảngTạo mảng có chỉ sốTruy cập phần tử theo chỉ sốSửa phần tử theo chỉ sốKích thước mảng với CountThêm phần tử vào mảngÔn tập: Quản lý danh sách đơn giản9Dự án: Danh sách việc cần làm đơn giản
Tổng quan về dự án và dữ liệuThêm việc cần làm mớiTự luyện tập: Trình biên dịch PHP online