Функция array_reverse() в PHP
Функция array_reverse() в PHP возвращает новый array с элементами в обратном порядке. Узнайте синтаксис, флаг preserve_keys и типичные ошибки.
Функция PHP array_reverse() возвращает новый array с элементами исходного array в обратном порядке. Это встроенная функция (расширения не требуется), работающая как с индексированными, так и с ассоциативными array. Она незаменима, когда нужно получить данные «от последнего к первому» — например, показать самые новые комментарии первыми, обойти список в обратном направлении или отменить сортировку.
На этой странице рассматриваются синтаксис, обработка ключей, флаг $preserve_keys и типичные ошибки.
Синтаксис
array_reverse(array $array, bool $preserve_keys = false): array| Параметр | Обязательный | Описание |
|---|---|---|
$array | Да | Array, который нужно перевернуть. |
$preserve_keys | Нет | Если true, числовые ключи сохраняются вместе со своими значениями и не перенумеровываются. String-ключи сохраняются всегда, независимо от этого флага. По умолчанию false. |
Функция возвращает новый array; исходный никогда не изменяется.
Как работает функция array_reverse() в PHP?
array_reverse() обходит входной array от последнего элемента к первому и формирует новый array в таком порядке. По умолчанию целочисленные ключи перенумеровываются начиная с 0, а string-ключи остаются неизменными. Передайте true вторым аргументом, чтобы сохранить исходные числовые ключи привязанными к своим значениям.
Вот простейший пример — переворот индексированного array:
Пример PHP: использование функции array_reverse
Вывод:
Array
(
[0] => cherry
[1] => banana
[2] => apple
)Как видим, порядок элементов в $reversed_array является обратным по отношению к порядку элементов в $original_array.
Использование array_reverse() с ассоциативными array
Как уже упоминалось, функцию array_reverse() можно применять и к ассоциативным array. При этом порядок элементов меняется на обратный, однако string-ключи по умолчанию остаются неизменными.
Вот пример использования функции array_reverse() с ассоциативным array:
Пример PHP: использование array_reverse() с ассоциативным array
Вывод:
Array
(
[c] => cherry
[b] => banana
[a] => apple
)Как видим, ключи элементов в $reversed_array по-прежнему соответствуют исходным ключам, однако порядок элементов изменён на обратный. String-ключи сохраняются всегда, поэтому флаг $preserve_keys здесь не имеет значения.
Сохранение числовых ключей
Для индексированных (с числовыми ключами) array функция array_reverse() по умолчанию перенумеровывает ключи с 0. Обычно это именно то, что нужно, однако иногда исходный индекс несёт смысловую нагрузку — номер строки, позиция, идентификатор. Передайте true вторым аргументом, чтобы эти ключи остались привязаны к своим значениям:
Пример PHP: сохранение числовых ключей с помощью array_reverse()
<?php
$data = array(10 => "ten", 20 => "twenty", 30 => "thirty");
// Default: numeric keys are renumbered from 0
print_r(array_reverse($data));
// preserve_keys = true: original numeric keys are kept
print_r(array_reverse($data, true));
?>Вывод:
Array
(
[0] => thirty
[1] => twenty
[2] => ten
)
Array
(
[30] => thirty
[20] => twenty
[10] => ten
)В первом array значения переставлены в обратном порядке, а ключи сброшены; во втором ключи 30, 20 и 10 следуют за своими значениями.
Типичные ошибки
- Функция не изменяет исходный array.
array_reverse($arr)возвращает новый array — она не переворачивает$arrна месте. Всегда сохраняйте возвращаемое значение:$arr = array_reverse($arr);. - Это не сортировка. Переворот лишь меняет текущий порядок на обратный. Чтобы получить убывающий порядок, сначала выполните сортировку (например, с помощью
rsort()илиarsort()), а не переворот. - String-ключи игнорируют
$preserve_keys. Флаг влияет только на целочисленные ключи; string-ключи сохраняются в любом случае. - Переворот строки.
array_reverse()работает только с array. Для переворота строки используйтеstrrev().
Связанные функции
array_slice()— извлечь часть array.array_merge()— объединить array.rsort()— отсортировать array по убыванию.krsort()— отсортировать ассоциативный array по ключу в обратном порядке.strrev()— перевернуть строку.
Заключение
Функция array_reverse() — мощный и универсальный инструмент, позволяющий легко изменять порядок элементов array на обратный. Независимо от того, работаете ли вы с индексированными или ассоциативными array, array_reverse() поможет вам манипулировать данными так, как это необходимо. Благодаря простому синтаксису и предсказуемому поведению функция array_reverse() является незаменимым инструментом для любого PHP-разработчика, работающего с array.