PHP Array Pop: Полное руководство
Исчерпывающее руководство по функции PHP array_pop(): синтаксис, возвращаемые значения, побочные эффекты и практические примеры.
array_pop() удаляет последний элемент из array, возвращает его и уменьшает array на один элемент. Именно так PHP array используется как стек — последний добавленный элемент извлекается первым. На этой странице рассматриваются синтаксис, возвращаемые значения, побочные эффекты (перенумерация числовых ключей и внутренний указатель), а также случаи применения функции.
Что делает array_pop()
array_pop() — встроенная функция PHP, которая:
- Удаляет элемент в конце array,
- Возвращает значение удалённого элемента и
- Изменяет array на месте — переданный array становится постоянно короче.
Если ключи array числовые (0, 1, 2, …), после извлечения они перенумеровываются начиная с 0. Строковые ключи остаются нетронутыми. Такое же поведение при перенумерации наблюдается у array_shift() — это главный момент, который нужно помнить.
Синтаксис
array_pop(array &$array): mixed| Часть | Значение |
|---|---|
&$array | Array, из которого извлекается элемент; передаётся по ссылке — изменяется напрямую. |
| возвращаемое значение | Значение последнего элемента или null, если array пуст. |
Поскольку $array передаётся по ссылке, нельзя вызвать array_pop() с литералом или результатом функции — необходимо передать переменную, содержащую array.
Удаление последнего элемента
Извлеките последний элемент и сохраните возвращённое значение:
array_pop() удаляет "cherry", возвращает его и оставляет в $fruits два элемента:
cherry
Array
(
[0] => apple
[1] => banana
)Извлечение из пустого array
Если array уже пуст, array_pop() возвращает null. В современных версиях PHP это происходит без предупреждений, поэтому результат можно спокойно проверять:
Вывод:
Array is empty
No element to popОбратите внимание, что возвращённый null неоднозначен — по нему нельзя отличить «array был пуст» от «последний элемент действительно имел значение null». Если это важно, проверьте count($array) перед извлечением.
Использование array_pop() как стека
Совместное использование array_pop() и array_push() (или $array[] = ...) даёт стек по принципу «последним пришёл — первым вышел» (LIFO). Цикл с array_pop() опустошает array с конца:
<?php
$stack = [1, 2, 3, 4, 5];
while (count($stack) > 0) {
echo array_pop($stack) . " ";
}
?>Вывод — элементы возвращаются в обратном порядке:
5 4 3 2 1 Числовые ключи перенумеровываются
Если после извлечения элемента из array с числовыми ключами добавить новый элемент через $array[], новый индекс будет продолжать перенумерованную последовательность, а не исходный максимальный ключ:
<?php
$data = ["x" => 10, "y" => 20, "z" => 30];
$value = array_pop($data); // removes "z" => 30
echo $value . "\n"; // 30
print_r($data);
?>30
Array
(
[x] => 10
[y] => 20
)Строковые ключи остаются нетронутыми. При числовых ключах array_pop() приводит их к последовательности 0, 1, 2, … — это важно учитывать, если другой код опирается на конкретные значения индексов.
Связанные функции
| Функция | Что удаляет / добавляет |
|---|---|
array_pop() | Удаляет последний элемент. |
array_push() | Добавляет один или несколько элементов в конец. |
array_shift() | Удаляет первый элемент. |
array_unshift() | Добавляет один или несколько элементов в начало. |
array_slice() | Извлекает часть array без изменения оригинала (при обычном вызове). |
Для более широкого знакомства с тем, как работают array, см. PHP Arrays.
Итоги
array_pop()удаляет и возвращает последний элемент array, изменяя его по ссылке.- Пустой array даёт
null— используйтеcount(), если нужно отличить пустой array от реального значенияnull. - Это естественный инструмент для стековой обработки (LIFO) и для последовательного усечения конца array.
- Числовые ключи перенумеровываются с
0; строковые ключи сохраняются.