PHP 8.5: array_first и array_last для выборок в Bitrix
Получение первого и последнего значения массива через array_first() и array_last() (PHP 8.5). Для результатов getList, массивов заказов и элементов без reset/end.
Как использовать
- Скопируйте нужный фрагмент кода.
- Вставьте в свой проект и при необходимости измените под задачу.
- Проверьте зависимости и окружение (версии, переменные).
В PHP 8.5 добавлены array_first() и array_last(): возвращают первое и последнее значение массива по порядку обхода. На пустом массиве — null. Один аргумент — массив. Удобная замена reset()/end() и лишнему foreach, когда нужен только один элемент из выборки в Bitrix.
<?php
/**
* Получить первый/последний элемент массива (PHP 8.5+).
* Ключи могут быть произвольными — берётся порядок обхода.
*/
$items = [10 => 'a', 0 => 'b', 3 => 'c', 2 => 'd'];
$first = array_first($items); // 'a'
$last = array_last($items); // 'd'
$empty = [];
array_first($empty); // null
array_last($empty); // null
Usage:
// После получения массива из D7 (например, итератор превращён в массив)
$list = [];
foreach ($iterator as $row) {
$list[] = $row;
}
$firstOrder = array_first($list);
$lastOrder = array_last($list);
// Или по уже имеющемуся массиву заказов/элементов
$orders = [...]; // массив заказов из выборки
$newest = array_last($orders); // последний по порядку
$oldest = array_first($orders); // первый по порядку
Notes:
⚠️ Сигнатура по документации: array_first(array $array): mixed, array_last(array $array): mixed. Callback нет — для поиска по условию используйте array_find() (PHP 8.4+). В Bitrix при работе с CDBResult или D7-итератором сначала соберите массив (например, через iterator_to_array() или цикл), затем вызывайте array_first/array_last.