Array unshift: примеры (PHP)

Использование array_unshift для добавления элементов в массив
Раздел: Работа с массивами
array_unshift(array &$array, mixed ...$values): int

Функция array_unshift() добавляет один или несколько элементов в начало массива. Все числовые ключи будут изменены, начиная с нуля, в то время как строковые ключи останутся без изменений. Эта функция полезна, когда требуется модифицировать массив, добавляя данные в его начало.

Аргументы функции

Функция принимает два или более аргументов:

  1. array &$array - Первый аргумент является ссылкой на массив, который будет изменен. Передается по ссылке, поэтому исходный массив модифицируется.
  2. mixed ...$values - Значения, которые будут добавлены в начало массива. Можно передавать любое количество элементов.

Функция возвращает новое количество элементов в массиве после добавления.

Примеры использования
Добавление одного элемента
<?
$queue = [\"яблоко\", \"банан\"];
$new_length = array_unshift($queue, \"апельсин\");
print_r($queue);
?>
Array
(
    [0] => апельсин
    [1] => яблоко
    [2] => банан
)

Новая длина массива: 3 (возвращено функцией).

Добавление нескольких элементов
<?
$numbers = [3, 4];
$new_length = array_unshift($numbers, 1, 2);
print_r($numbers);
?>
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
Работа с ассоциативными массивами
<?
$assoc = [\"b\" => \"банан\", \"c\" => \"вишня\"];
array_unshift($assoc, \"апельсин\");
print_r($assoc);
?>
Array
(
    [0] => апельсин
    [b] => банан
    [c] => вишня
)
Похожие функции в PHP
  • array_push() - Добавляет элементы в конец массива. Удобно для реализации стека.
  • array_shift() - Извлекает первый элемент массива и удаляет его. Является парной для array_unshift.
  • array_pop() - Извлекает последний элемент массива и удаляет его. Парная для array_push.
  • [] оператор - Добавление элемента в конец массива с помощью синтаксиса $array[] = $value. Работает быстрее, чем array_push для одного элемента.

Выбор функции зависит от задачи: для добавления в начало используется array_unshift, в конец - array_push или [].

Типичные ошибки
Передача не массива
<?
$var = \"строка\";
array_unshift($var, \"элемент\"); // Warning: array_unshift() expects parameter 1 to be array
?>

Функция ожидает массив в качестве первого аргумента.

Неправильное использование возвращаемого значения
<?
$arr = [1, 2];
$newArray = array_unshift($arr, 0); // $newArray содержит число 3, а не массив
print_r($newArray); // 3
?>

Функция возвращает новую длину массива, а не сам массив.

Изменения в PHP 8.0

В PHP 8.0 сигнатура функции была изменена для поддержки аргументов с переменным количеством (variadic arguments). Ранее она имела вид array_unshift(&$array, $value1, $value2...). Теперь явно указано, что значения передаются как ...$values. Поведение функции осталось прежним.

Расширенные примеры
Добавление массива как элемента
<?
$stack = [['id' => 2]];
array_unshift($stack, ['id' => 1]);
print_r($stack);
?>
Array
(
    [0] => Array
        (
            [id] => 1
        )
    [1] => Array
        (
            [id] => 2
        )
)
Совместное использование с array_shift
<?
$queue = [];
array_unshift($queue, 'a', 'b', 'c'); // ['a', 'b', 'c']
$first = array_shift($queue); // 'a', очередь: ['b', 'c']
echo $first;
?>
a
Добавление разных типов данных
<?
$data = [true];
array_unshift($data, 42, 3.14, \"текст\", null, [1,2]);
print_r($data);
?>
Array
(
    [0] => 42
    [1] => 3.14
    [2] => текст
    [3] =>
    [4] => Array
        (
            [0] => 1
            [1] => 2
        )
    [5] => 1
)
Имитация очереди с приоритетом
<?
$tasks = [\"обычная задача\"];
// Добавление срочной задачи в начало
array_unshift($tasks, \"срочная задача\");
print_r($tasks);
?>
Array
(
    [0] => срочная задача
    [1] => обычная задача
)
Альтернативы в других языках
JavaScript
let arr = ['apple', 'banana'];
let newLength = arr.unshift('orange');
console.log(arr); // ['orange', 'apple', 'banana']

Метод unshift() работает аналогично, изменяя исходный массив и возвращая новую длину.

Python
from collections import deque
queue = deque(['apple', 'banana'])
queue.appendleft('orange')
print(list(queue)) # ['orange', 'apple', 'banana']

Списки Python не имеют встроенного метода для эффективного добавления в начало. Для этой цели используется deque с методом appendleft. Обычный список: list.insert(0, 'orange'), но это менее эффективно.

MySQL

В SQL массивы как таковые отсутствуют. Для работы с наборами данных используются операции над таблицами.

PHP array_unshift function comments

En
Array unshift Prepend one or more elements to the beginning of an array