Menu
Coddy logo textTech

Удаление с помощью 'array_shift'

Часть раздела Логика и управление потоком путешествия по PHP на Coddy. Урок 13 из 68.

Функция array_shift() удаляет первый элемент из array и возвращает это значение removed. Это противоположно функции array_unshift(), которая добавляет элементы в начало array.

Вот как это работает:

<?php
$queue = ["Alice", "Bob", "Charlie"];
$firstPerson = array_shift($queue);
echo $firstPerson;  // Выводит: Alice
print_r($queue);    // Outputs: Array ( [0] => Bob [1] => Charlie )
?>

Обрати внимание, что array_shift() изменяет исходный массив и возвращает удалённый элемент. После удаления первого элемента все оставшиеся элементы автоматически сдвигаются вниз, чтобы заполнить пробел: "Bob" перемещается с индекса 1 на индекс 0, а "Charlie" — с индекса 2 на индекс 1.

Эта переиндексация происходит автоматически, обеспечивая сохранение правильной числовой последовательности в вашем массиве. Если вы используете array_shift() для пустого массива, он возвращает null, не вызывая ошибки.

Эта функция особенно полезна для реализации queue, где items обрабатываются в порядке «первым пришёл — первым вышел», например при обслуживании customers в line или обработке tasks в порядке их получения.

challenge icon

Задание

Легко

Вы получите два входных значения: исходный массив customers, ожидающих в queue, в формате JSON, и number, указывающий, сколько customers нужно serve. Прочитайте оба входных значения, преобразуйте строку JSON в array, используйте array_shift() указанное number раз, чтобы удалить обслуженных customers из front queue, и выведите final array с помощью print_r().

Формат входных данных: Две строки — первая строка содержит массив JSON (пример: ["Alice","Bob","Charlie","Diana"]), вторая строка содержит number customers, которых нужно serve (number)

Ожидаемый вывод: array после удаления обслуженных customers из front queue, выведенный с помощью print_r()

Попробуйте сами

<?php
// Прочитать JSON-массив клиентов
$jsonInput = fgets(STDIN);
$customers = (array)json_decode($jsonInput, true);

// Прочитать количество клиентов для обслуживания
$numToServe = intval(fgets(STDIN));

// TODO: Напишите ваш код ниже
// Используйте array_shift() для удаления клиентов из начала очереди


// Вывести итоговый массив
print_r($customers);
?>
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор PHP