Функция array_shift() и array_unshift()

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

Если `array_push()` и `array_pop()` работают с концом массива, то их "зеркальные" братья — `array_shift()` и `array_unshift()` — отвечают за его начало. Эти функции незаменимы, когда нужно реализовать структуру "очередь" (первым пришел — первым ушел, FIFO).

`array_unshift()` позволяет добавить один или несколько элементов в самое начало массива, сдвигая все остальные элементы "вправо".
`array_shift()` извлекает самый первый элемент, сдвигая оставшиеся "влево" и обновляя их числовые ключи.

В этом уроке мы детально разберем эту пару функций. Ты научишься управлять элементами в начале массива, поймешь важные отличия в их поведении (особенно в том, что они возвращают и как влияют на ключи) и сможешь смоделировать настоящую очередь.

Список тем

Добавление в начало с array_unshift()

id: 38964_task_shift_1

Представь, что у нас есть очередь из двух человек, и кто-то очень важный хочет пройти без очереди. Его нужно поставить в самое начало. Используй функцию `array_unshift()`, чтобы добавить 'VIP-клиент' в начало массива `$queue`.

Заполните пропуски
<?php

$queue = ['Клиент 1', 'Клиент 2'];

input1S($queue, 'VIP-клиент');

print_r($queue);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Извлечение из начала с array_shift()

id: 38964_task_shift_2

Теперь обслужим первого человека в очереди. Функция `array_shift()` извлекает самый первый элемент из массива. Используя токены из банка, составь команду, которая удалит первый элемент из массива `$documents`.

Нужно правильно расставить в пропуски предложенные варианты
<?php

$documents = ['Doc A', 'Doc B', 'Doc C'];

// Обрабатываем первый документ
$processed_doc = input1S(input2S);

echo "Обработан: " . $processed_doc;
print_r($documents);
array_shift
$documents
array_pop
unset
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Что возвращает array_shift()?

id: 38964_task_shift_3

Аналогично `array_pop()`, функция `array_shift()` не просто удаляет, но и возвращает удаленный элемент. Проанализируй код и напиши в поле для ответа, какое значение будет выведено на экран.

Что должно получиться?
<?php

$line = ['Anna', 'Bob', 'Charles'];
$first_in_line = array_shift($line);

echo $first_in_line;
Сообщения
Проверить
Показать подсказку

Что возвращает array_unshift()?

id: 38964_task_shift_4

Здесь есть важный нюанс! `array_unshift()` возвращает не сам измененный массив, а новое количество элементов в нем (точно так же, как `array_push()`). Посмотри на код и выбери, что будет выведено в результате.

Выберите правильный вариант ответа
<?php

$letters = ['C'];
$new_count = array_unshift($letters, 'A', 'B');

echo $new_count;
Сообщения
Проверить
Показать подсказку

Переиндексация после array_shift()

id: 38964_task_shift_5

Ключевое отличие `array_shift()` от `unset()` — это то, что `array_shift()` ПЕРЕИНДЕКСИРУЕТ числовые ключи. Они всегда будут идти с 0 без "дырок". Посмотри, что произойдет с массивом, и выбери правильный `print_r` результат.

Выберите правильный вариант ответа
<?php
$list = [0 => 'A', 1 => 'B', 2 => 'C'];
array_shift($list);
print_r($list);
Сообщения
Проверить
Показать подсказку

Порядок аргументов в array_unshift()

id: 38964_task_shift_6

Программист перепутал порядок аргументов в `array_unshift()`. Первым всегда должен идти массив, а затем — добавляемые элементы. Исправь строку, чтобы она работала корректно.

Найдите ошибку и исправьте
<?php
$letters = ['B', 'C'];
array_unshift('A', $letters);
print_r($letters);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Имитация очереди (FIFO)

id: 38964_task_shift_7

Очередь работает по принципу "первым пришел — первым ушел" (FIFO). Давай смоделируем это. Собери скрипт, который: 1. Создает пустую очередь. 2. Добавляет в конец "Клиент A". 3. Добавляет в конец "Клиент B". 4. Обслуживает (извлекает из начала) первого клиента и выводит его имя.

Перетяните в правильном порядке строки из одного блока в другой
array_push($queue, "Клиент A");
$served = array_shift($queue);
<?php
$queue = [];
echo "Обслужен: " . $served;
array_push($queue, "Клиент B");
$served = array_pop($queue);
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

array_shift() и ассоциативный массив

id: 38964_task_shift_8

А что `array_shift()` делает со строковыми ключами? В отличие от числовых, она их НЕ трогает. Посмотри на код и выбери, как будет выглядеть массив после удаления первого элемента.

Выберите правильный вариант ответа
<?php
$config = [
    'host' => 'localhost',
    'user' => 'admin',
    'pass' => '123'
];
array_shift($config);
print_r($config);
Сообщения
Проверить
Показать подсказку
🚀 Визуализатор кода
0 / 0
Скорость:
Режим:
💡 Что происходит?
Загрузите пример для начала...
🤔
Проверка знаний
История шагов
Готов
НайтиКурс.Ру