Menu
CoddyTech

Xóa việc cần làm

Thuộc phần Kiến thức cơ bản trong hành trình PHP của Coddy. Bài học 58 trên 71.

challenge icon

Thử thách

Dễ

Trong bài học trước, bạn đã đánh dấu một nhiệm vụ là hoàn thành. Bây giờ, hãy thêm khả năng xóa hẳn một nhiệm vụ khỏi danh sách.

Đọc bốn dòng đầu vào chứa 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. Cuối cùng, đọ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 khỏi danh sách.

Sau khi tạo mảng $todos chứa cả bốn nhiệm vụ và đánh dấu nhiệm vụ được chỉ định là hoàn thành, hãy xóa nhiệm vụ tại chỉ số cần xóa bằng array_splice().

Hàm array_splice() xóa các phần tử khỏi một mảng:

<?php
array_splice($array, $index, 1); // Removes 1 element at $index
?>

Sau đó, lặp qua các nhiệm vụ còn lại và in từng nhiệm vụ theo cùng định dạng như trước:

  • Nếu nhiệm vụ đã hoàn thành: - [task description] (Done)
  • Nếu nhiệm vụ đang chờ: - [task description] (Pending)

In mỗi nhiệm vụ trên một dòng riêng.

Ví dụ:

Nếu đầu vào là Buy groceries, Walk the dog, Finish homework, Call mom, 1 và 2, thì đầu ra sẽ là:

- Buy groceries (Pending)
- Walk the dog (Done)
- Call mom (Pending)

Nếu đầu vào là Clean room, Read book, Exercise, Cook dinner, 0 và 0, thì đầu ra sẽ là:

- Read book (Pending)
- Exercise (Pending)
- Cook dinner (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));

// 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;

// 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";
    }
}
?>

Tất cả bài học trong Kiến thức cơ bản

Tự luyện tập: Trình biên dịch PHP online