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

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

Функция array_push предназначена для добавления одного или нескольких элементов в конец массива. Её применяют, когда требуется динамически расширять массив новыми значениями без явного указания индексов.

Синтаксис
int array_push ( array &$array , mixed ...$values )

Первый аргумент – ссылка на исходный массив, который будет изменён. Последующие аргументы – значения, добавляемые в конец массива. Функция возвращает новое количество элементов в массиве после добавления.

Простые примеры использования
Добавление одного элемента
$arr = [1, 2];
echo array_push($arr, 3);
print_r($arr);
3
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Добавление нескольких элементов
$arr = ['a'];
echo array_push($arr, 'b', 'c');
print_r($arr);
3
Array
(
    [0] => 'a'
    [1] => 'b'
    [2] => 'c'
)
Работа с ассоциативным массивом
$arr = ['x' => 10];
echo array_push($arr, 20);
print_r($arr);
2
Array
(
    [x] => 10
    [0] => 20
)
Похожие функции в PHP
Оператор []

Для добавления одного элемента часто применяют синтаксис $array[] = $value. Он работает быстрее и не требует вызова функции.

Добавляет элементы в начало массива с переиндексацией числовых ключей.

Объединяет несколько массивов, сохраняя ключи, но при совпадении числовых ключей они переиндексируются.

+ (оператор объединения)

Объединяет массивы, но при совпадении ключей остаются элементы из первого массива.

Распространённые ошибки
Передача не массива
$var = 'строка';
array_push($var, 'значение');
Warning: array_push() expects parameter 1 to be array, string given
Игнорирование возвращаемого значения
$arr = [1, 2];
array_push($arr, 3);
// Предполагаем, что $arr содержит только [1,2,3], но если функция возвращает false?
Добавление массива как элемента
$arr = [1];
array_push($arr, [2, 3]);
print_r($arr);
Array
(
    [0] => 1
    [1] => Array
        (
            [0] => 2
            [1] => 3
        )
)
Изменения в новых версиях PHP

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

Расширенные примеры
Использование с spread оператором
Пример php
$items = ['a', 'b'];
$newItems = ['c', 'd'];
array_push($items, ...$newItems);
print_r($items);
Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
)
Эмуляция стека
Пример php
$stack = [];
array_push($stack, 'задача1', 'задача2');
$task = array_pop($stack);
echo $task;
задача2
Добавление с генерацией ключей
Пример php
$arr = ['a' => 1];
array_push($arr, 2, 3);
print_r($arr);
Array
(
    [a] => 1
    [0] => 2
    [1] => 3
)
Сравнение производительности
Пример php
$arr = [];
$start = microtime(true);
for ($i = 0; $i < 10000; $i++) {
    array_push($arr, $i);
}
$time1 = microtime(true) - $start;

$arr = [];
$start = microtime(true);
for ($i = 0; $i < 10000; $i++) {
    $arr[] = $i;
}
$time2 = microtime(true) - $start;

printf('array_push: %.4f, []: %.4f', $time1, $time2);
array_push: 0.0012, []: 0.0008
Аналоги в других языках

Array push в Javascript

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

let arr = [1, 2];
console.log(arr.push(3));
console.log(arr);
3
[1, 2, 3]

Array push в Python

Метод append() добавляет один элемент, extend() – несколько, но они не возвращают новую длину.

lst = [1, 2]
lst.append(3)
print(len(lst))
print(lst)
3
[1, 2, 3]

Array push в MySQL

В контексте работы с JSON можно использовать функцию JSON_ARRAY_APPEND.

SET @json = '[1, 2]';
SELECT JSON_ARRAY_APPEND(@json, '$', 3);
[1, 2, 3]

PHP array_push function comments

En
Array push Pushes one or more elements onto the end of array