PHP
#php#php-8-5#bitrix#array_first#array_last#getList#selection

PHP 8.5: array_first и array_last для выборок в Bitrix

Получение первого и последнего значения массива через array_first() и array_last() (PHP 8.5). Для результатов getList, массивов заказов и элементов без reset/end.

Как использовать

  1. Скопируйте нужный фрагмент кода.
  2. Вставьте в свой проект и при необходимости измените под задачу.
  3. Проверьте зависимости и окружение (версии, переменные).

В 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.