W3docs

Функция 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

php— editable, runs on the server

Вывод:

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

php— editable, runs on the server

Вывод:

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.

Практика

Практика
Что из перечисленного верно в отношении функции array_reverse() в PHP?
Что из перечисленного верно в отношении функции array_reverse() в PHP?
Was this page helpful?