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

Примеры и особенности функции array_reverse
Раздел: Работа с массивами
array_reverse(array $array, bool $preserve_keys = false): array

Описание функции array_reverse

Назначение и синтаксис

Функция array_reverse возвращает новый массив, элементы которого расположены в порядке, обратном исходному массиву. Эта функция часто применяется для изменения последовательности данных без модификации начального массива.

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

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

  1. array - обязательный аргумент, исходный массив для обработки.
  2. preserve_keys - необязательный аргумент логического типа. При значении true числовые ключи сохраняются, строковые ключи всегда остаются неизменными. Значение по умолчанию - false.

Базовые примеры использования

Простой числовой массив
$array = [10, 20, 30, 40];
$result = array_reverse($array);
print_r($result);
Array
(
    [0] => 40
    [1] => 30
    [2] => 20
    [3] => 10
)
Сохранение числовых ключей
$array = [10, 20, 30, 40];
$result = array_reverse($array, true);
print_r($result);
Array
(
    [3] => 40
    [2] => 30
    [1] => 20
    [0] => 10
)
Ассоциативный массив
$array = ['a' => 'apple', 'b' => 'banana', 'c' => 'cherry'];
$result = array_reverse($array);
print_r($result);
Array
(
    [c] => cherry
    [b] => banana
    [a] => apple
)

Аналогичные функции в PHP

rsort и arsort

Функции rsort и arsort сортируют массив в обратном порядке, но изменяют исходный массив, в отличие от array_reverse. rsort используется для индексированных массивов, arsort - для ассоциативных с сохранением ключей.

Функция array_flip меняет местами ключи и значения, что иногда может использоваться для изменения порядка, но с другой логикой.

Распространенные ошибки

Ожидание рекурсивной работы

Функция не обрабатывает вложенные массивы рекурсивно.

$array = [1, [2, 3], 4];
$result = array_reverse($array);
print_r($result);
Array
(
    [0] => 4
    [1] => Array
        (
            [0] => 2
            [1] => 3
        )
    [2] => 1
)
Непонимание preserve_keys для числовых ключей

При preserve_keys = false числовые ключи сбрасываются, строковые - всегда сохраняются.

$array = [2 => 'a', 5 => 'b', 10 => 'c'];
$result = array_reverse($array);
print_r($result);
Array
(
    [0] => c
    [1] => b
    [2] => a
)

Изменения в версиях PHP

В PHP 8.0 функция array_reverse не претерпела значительных изменений. Поведение функции остается стабильным с момента введения параметра preserve_keys в PHP 4.0.3.

Расширенные примеры применения

Комбинирование с array_slice

Извлечение последних N элементов с последующим разворотом.

Пример php
$array = [1, 2, 3, 4, 5, 6];
$lastThree = array_slice($array, -3);
$reversed = array_reverse($lastThree);
print_r($reversed);
Array
(
    [0] => 6
    [1] => 5
    [2] => 4
)
Работа с массивами объектов

Функция корректно работает с массивами, содержащими объекты.

Пример php
class Item {
    public function __construct(public $value) {}
}
$array = [new Item('first'), new Item('second')];
$result = array_reverse($array);
print_r($result);
Array
(
    [0] => Item Object
        (
            [value] => second
        )
    [1] => Item Object
        (
            [value] => first
        )
)
Имитация очереди LIFO

Использование для обработки данных по принципу "последним пришел - первым ушел".

Пример php
$queue = ['task1', 'task2', 'task3'];
$processingOrder = array_reverse($queue);
print_r($processingOrder);
Array
(
    [0] => task3
    [1] => task2
    [2] => task1
)

Аналоги в других языках программирования

Array reverse в Python

В Python для разворота списка используется срез или функция reversed.

my_list = [10, 20, 30, 40]
reversed_list = my_list[::-1]
print(reversed_list)
[40, 30, 20, 10]

Array reverse в Javascript

Метод reverse изменяет исходный массив. Для создания нового массива используется копирование.

let array = [10, 20, 30, 40];
let newArray = [...array].reverse();
console.log(newArray);
[40, 30, 20, 10]

Array reverse в MySQL

В SQL нет прямой аналогии, но можно использовать ORDER BY ... DESC в запросах для обратной сортировки результатов.

PHP array_reverse function comments

En
Array reverse Return an array with elements in reverse order