Prev: примеры (PHP)

Использование prev для навигации по массивам в PHP
Раздел: Работа с массивами
prev(array|object &$array): mixed

Описание функции prev в PHP

Функция prev перемещает внутренний указатель массива на один элемент назад и возвращает его значение. Она работает с внутренним указателем массива, который используется такими функциями, как current, next, reset и end.

Когда используется

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

Аргументы

Функция принимает один обязательный параметр:

  • array — массив, внутренний указатель которого нужно сдвинуть. Передается по ссылке.

Возвращает значение предыдущего элемента или false, если массив пуст или указатель вышел за пределы.

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

Базовый пример сдвига указателя
$array = ['яблоко', 'банан', 'вишня'];
end($array); // Указатель на последнем элементе
$prev = prev($array);
echo $prev;
банан
Использование в цикле
$array = [10, 20, 30, 40];
end($array);
while ($value = prev($array)) {
    echo $value . " ";
}
30 20 10
Реакция на границы массива
$array = ['первый'];
reset($array);
$result = prev($array);
var_dump($result);
bool(false)

Похожие функции в PHP

Для работы с внутренним указателем массива существует несколько функций.

Перемещает указатель вперед на один элемент. Используется для итерации в прямом направлении.

current()

Возвращает текущий элемент массива, не сдвигая указатель.

Устанавливает указатель на первый элемент массива. Часто используется для начала итерации.

end()

Перемещает указатель на последний элемент массива.

key()

Возвращает ключ текущего элемента массива.

Функция prev предпочтительна, когда требуется перемещаться по массиву в обратном направлении от текущей позиции. Для обычной итерации чаще применяют foreach.

Типичные ошибки

Использование с неинициализированной переменной
$result = prev($undefinedArray);
// Предупреждение и возврат false
Неявное преобразование типа
$value = prev([0, false, null]);
// Если элемент равен false, цикл while остановится раньше времени
while ($val = prev($array)) {
    // Логика
}
Игнорирование возвращаемого false при выходе за границы
$array = [1];
reset($array);
$prev = prev($array);
if ($prev === false) {
    echo 'Достигнут конец массива';
}
Достигнут конец массива

Изменения в последних версиях PHP

Начиная с PHP 8.0, если параметр array не является ссылкой, функция выбрасывает ошибку уровня E_WARNING. Ранее она молча возвращала null.

// PHP 7
$result = prev('not_an_array'); // Возвращал null
// PHP 8
$result = prev('not_an_array'); // Вызовет Warning

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

Навигация по истории с проверкой
Пример php
$history = ['страница1', 'страница2', 'страница3'];
end($history);
$current = current($history);
$previous = prev($history);
echo 'Текущая: ' . $current . '\n';
echo 'Предыдущая: ' . ($previous !== false ? $previous : 'нет');
Текущая: страница3
Предыдущая: страница2
Комбинация с key() для ассоциативных массивов
Пример php
$assoc = ['a' => 1, 'b' => 2, 'c' => 3];
end($assoc);
$prevValue = prev($assoc);
$prevKey = key($assoc);
echo "Ключ: $prevKey, Значение: $prevValue";
Ключ: b, Значение: 2
Обратная итерация с reset
Пример php
$data = [5, 15, 25];
end($data);
while (($val = prev($data)) !== false) {
    echo $val * 2 . " ";
}
30 10
Имитация двунаправленного итератора
Пример php
$items = ['старт', 'середина', 'финиш'];
reset($items);
next($items);
$current = current($items); // 'середина'
$back = prev($items); // Возвращаемся к 'старт'
echo $back;
старт

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

Prev в Python

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

my_list = ['a', 'b', 'c']
index = len(my_list) - 2  # Аналог end() + prev()
print(my_list[index])
b

Prev в Javascript

В JavaScript у массивов нет внутреннего указателя. Используют индексную арифметику или итераторы.

const arr = ['x', 'y', 'z'];
let idx = arr.length - 1;
idx--; // Уменьшаем индекс
console.log(arr[idx]);
y

Prev в MySQL

В SQL для навигации по результатам запроса используются курсоры, но их применение сильно отличается от PHP-массивов и встречается реже.

PHP prev function comments

En
Prev Rewind the internal array pointer