Функция array_reverse()

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

Часто в программировании возникает необходимость "перевернуть" массив, чтобы последний элемент стал первым, предпоследний — вторым, и так далее. Для этой задачи в PHP есть простая и удобная функция — `array_reverse()`.

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

Список тем

Базовый разворот массива

id: 38972_task_reverse_1

Давайте начнем с простого примера. У нас есть нумерованный массив. Ваша задача — использовать нужную функцию, чтобы развернуть его и получить новый массив `$reversed_numbers`, в котором элементы идут в обратном порядке.

Заполните пропуски
<?php
$numbers = [10, 20, 30, 40];

// Разворачиваем массив
$reversed_numbers = input1S(input2S);

print_r($reversed_numbers);
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Что происходит с числовыми ключами?

id: 38972_task_reverse_2

По умолчанию `array_reverse()` не сохраняет числовые ключи, а переиндексирует их заново с нуля. Посмотрите на код и выберите вариант, который правильно отражает результат работы функции с нумерованным массивом.

Выберите правильный вариант ответа
<?php
$letters = ['a', 'b', 'c'];
// Ключи:   0    1    2

$reversed_letters = array_reverse($letters);

print_r($reversed_letters);
?>
Сообщения
Проверить
Показать подсказку

Забыли присвоить результат

id: 38972_task_reverse_3

Как и многие другие функции для работы с массивами, `array_reverse()` не изменяет исходный массив. Программист забыл об этом и ожидал, что массив `$steps` изменится. Исправьте код, чтобы он выводил развернутый массив.

Найдите ошибку и исправьте
<?php
$steps = ['one', 'two', 'three'];
 
// Ошибка: результат не сохраняется
array_reverse($steps);
 
// Выводится исходный, неизмененный массив
print_r($steps);
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Разворот ассоциативного массива

id: 38972_task_reverse_4

В отличие от числовых ключей, строковые (ассоциативные) ключи при развороте массива сохраняются по умолчанию. Проанализируйте код и впишите в поле ответа то, что выведет `print_r()`.

Что должно получиться?
<?php
$data = [
    'first' => 100,
    'second' => 200,
    'third' => 300
];

$reversed_data = array_reverse($data);

print_r($reversed_data);
?>
Сообщения
Проверить
Показать подсказку

Сохранение числовых ключей

id: 38972_task_reverse_5

Что если мы все-таки хотим сохранить исходные числовые ключи при развороте? Для этого `array_reverse()` имеет второй, необязательный параметр. Перетащите из банка правильное значение, чтобы включить режим сохранения ключей.

Нужно правильно расставить в пропуски предложенные варианты
<?php
$items = ['A', 'B', 'C'];
// Ключи:  0    1    2

// Разворачиваем массив с сохранением ключей
$reversed_items = array_reverse($items, input1S);

print_r($reversed_items);
?>
true
false
1
'preserve'
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Сравнение режимов разворота

id: 38972_task_reverse_6

Чтобы закрепить материал, посмотрите на два варианта разворота одного и того же массива: один с параметром `true`, другой без него. Какой из вариантов выведет `print_r($with_keys)`?

Выберите правильный вариант ответа
<?php
$source = [10 => 'ten', 20 => 'twenty'];

$without_keys = array_reverse($source);
$with_keys = array_reverse($source, true);

print_r($with_keys);
?>
Сообщения
Проверить
Показать подсказку

Практический пример: лента новостей

id: 38972_task_reverse_7

У вас есть массив новостей, отсортированный от старых к новым. Соберите из фрагментов скрипт, который развернет этот массив, чтобы показать самые свежие новости первыми, и выведет их. В банке есть лишние строки.

Перетяните в правильном порядке строки из одного блока в другой
$news = ["Новость 1", "Новость 2", "Новость 3"];
print_r($latest_news);
<?php
?>
$latest_news = array_reverse($news);
$latest_news = sort($news);
echo $latest_news;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
НайтиКурс.Ру