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

Как использовать end() для работы с массивами в PHP
Раздел: Работа с массивами
end(array|object &$array): mixed

Функция end в PHP

Функция end() перемещает внутренний указатель массива на его последний элемент и возвращает значение этого элемента. Она используется для быстрого получения конечного значения массива без необходимости знать его точный размер или ключи.

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

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

  • &array — массив, чей последний элемент требуется получить. Параметр передаётся по ссылке, так как функция изменяет внутренний указатель.

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

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

Базовый пример с индексированным массивом
$array = [10, 20, 30, 40];
$result = end($array);
echo $result;
40
Пример с ассоциативным массивом
$user = ['name' => 'Иван', 'age' => 30, 'city' => 'Москва'];
$lastValue = end($user);
echo $lastValue;
Москва
Пустой массив
$empty = [];
var_dump(end($empty));
bool(false)
После end() внутренний указатель остаётся на последнем элементе
$data = ['a', 'b', 'c'];
echo end($data)."\n";
echo current($data)."\n";
c
c

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

Удаляет и возвращает последний элемент массива, изменяя его размер. end() только перемещает указатель.

Устанавливает указатель на первый элемент массива. Противоположность end().

current()

Возвращает текущий элемент массива без перемещения указателя. Часто используется после end().

Может вернуть последний элемент при указании отрицательного индекса: array_slice($array, -1)[0].

Рекомендации по выбору

array_pop() используют, когда последний элемент нужно извлечь. end() применяют для получения значения без изменения массива. Для работы с указателями удобны end() и reset().

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

Передача не массива

В PHP 8.0+ это вызывает фатальную ошибку TypeError.

$var = "string";
$result = end($var);
TypeError: end(): Argument #1 must be of type array, string given
Игнорирование возврата false

Если массив пуст или функция возвращает false, это может быть неверно интерпретировано.

$array = [false, true];
$last = end($array);
var_dump($last);
bool(true)
Предположение о неизменности указателя

end() изменяет внутренний указатель, что влияет на последующие вызовы current(), next().

$arr = [1, 2, 3];
echo current($arr)."\n";
echo end($arr)."\n";
echo current($arr);
1
3
3

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

PHP 8.0.0

Функция теперь строго типизирована. Передача аргумента, не являющегося массивом, вызывает исключение TypeError. Радо этого выдавалось предупреждение и возвращалось false.

PHP 7.0.0

Улучшена обработка пустых массивов. Для пустого массива функция всегда возвращает false.

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

Итерация с конца массива
Пример php
$array = ['a', 'b', 'c', 'd'];
for ($value = end($array); $value !== false; $value = prev($array)) {
    echo $value . " ";
}
d c b a
Получение последнего ключа массива
Пример php
$array = ['first' => 1, 'second' => 2, 'last' => 3];
end($array);
$lastKey = key($array);
echo $lastKey;
last
Сравнение array_pop и end
Пример php
$arr1 = [1, 2, 3];
$arr2 = [1, 2, 3];
$pop = array_pop($arr1);
$end = end($arr2);
echo "pop: $pop, массив после pop: "; print_r($arr1);
echo "end: $end, массив после end: "; print_r($arr2);
pop: 3, массив после pop: Array
(
    [0] => 1
    [1] => 2
)
end: 3, массив после end: Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Многомерные массивы
Пример php
$multi = [
    ['id' => 1],
    ['id' => 2],
    ['id' => 3]
];
$lastRow = end($multi);
echo $lastRow['id'];
3
Использование в реализации стека
Пример php
$stack = [];
array_push($stack, 'task1', 'task2');
$lastTask = end($stack);
echo "Последняя добавленная задача: $lastTask";
Последняя добавленная задача: task2
Сброс указателя после end
Пример php
$data = [10, 20, 30];
$last = end($data);
reset($data);
echo "Последний: $last, первый: ". current($data);
Последний: 30, первый: 10

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

End в Python

Используют индексацию [-1] или метод list.pop() с изменением списка.

arr = [10, 20, 30]
print(arr[-1])
30

End в Javascript

Свойство .length и индексация или метод .pop().

let arr = [10, 20, 30];
console.log(arr[arr.length - 1]);
30

End в MySQL

Функция SUBSTRING_INDEX() для строк или подзапросы с ORDER BY ... DESC LIMIT 1.

SELECT SUBSTRING_INDEX('a,b,c', ',', -1);
c
Отличия от PHP

В Python и JavaScript доступ по индексу — более распространённый способ, чем перемещение указателя. В PHP end() часто применяют в циклах с prev() и next().

PHP end function comments

En
End Set the internal pointer of an array to its last element