Menu
Coddy logo textTech

Удаление задачи

Часть раздела Основы путешествия по PHP на Coddy — урок 58 из 71.

challenge icon

Задание

Легко

В предыдущем уроке вы отметили задачу как выполненную. Теперь добавьте возможность полностью удалить задачу из списка.

Прочитайте четыре строки ввода с описаниями задач (три начальные задачи плюс одна новая). Затем прочитайте пятый ввод: целое число, представляющее индекс задачи для отметки как выполненной. Наконец, прочитайте шестой ввод: целое число, представляющее индекс задачи для удаления из списка.

После создания массива $todos со всеми четырьмя задачами и отметки указанной задачи как выполненной удалите задачу по заданному индексу удаления с помощью array_splice().

Функция array_splice() удаляет элементы из массива:

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

Затем пройдитесь циклом по оставшимся задачам и выведите каждую в том же формате, что и раньше:

  • Если задача выполнена: - [task description] (Done)
  • Если задача ожидает: - [task description] (Pending)

Выводите каждую задачу на отдельной строке.

Пример:

Если вводы Buy groceries, Walk the dog, Finish homework, Call mom, 1 и 2, то вывод должен быть:

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

Если вводы Clean room, Read book, Exercise, Cook dinner, 0 и 0, то вывод должен быть:

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

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

Все уроки раздела Основы