PHP 8.5: Новые функции массивов array_first() и array_last()

PHP 8.5: Новые функции массива array_first и array_last.

В PHP 8.5 добавлены две новые функции получения первого и последнего значений массива. Эти функции дополняют функции array_key_first и array_key_last, добавленные в PHP 7.3.

Функция array_first

Функция array_first возвращает первое значение заданного массива. Для массивов со списком это, по сути, значение ключа 0. Однако array_first возвращает первое значение даже в ассоциативных массивах.

/**
* Возвращает первое значение заданного массива.
*
* @param array $array Массив для получения первого значения.
* @return mixed Первое значение массива или null, если массив пуст.
* Обратите внимание, что null также может быть допустимым значением массива.
*/

function array_first(array $array): mixed {}

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

array_first([1, 2, 3]); // 1
array_first([2, 3]); // 2
array_first(['a' => 2, 'b' => 1]); // 2
array_first([null, 2, 3]); // null
array_first([]); // null
array_first([$obj, 2, 3]); // $obj
array_first([1])); // 1
array_first([true]); // true

Функция array_last

Функция array_last возвращает последнее значение заданного массива.

/**
* Возвращает последнее значение заданного массива.
* @param array $array Массив для получения последнего значения.
* @return mixed Последнее значение массива или null, если массив пуст.
* Обратите внимание, что null также может быть допустимым значением массива.
*/

function array_last(array $array): mixed {
return empty($array) ? null : $array[array_key_last($array)];
}

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

array_last([1, 2, 3]); // 3
array_last([2, 3]); // 3
array_last(['a' => 2, 'b' => 1]); // 1
array_last([2, 3, null]); // null
array_last([]); // null
array_last([2, 3, $obj]); // $obj
array_last([1])); // 1
array_last([true]); // true

Полифилл функций array_first и array_last

Можно тривиально реализовать полифилл новых функций, используя функции array_key_first и array_key_last, добавленные в PHP 7.3.

function array_first(array $array): mixed {
return $array === [] ? null : $array[array_key_first($array)];
}
function array_last(array $array): mixed {
return $array === [] ? null : $array[array_key_last($array)];
}

В качестве альтернативы, пакет polyfills/array-first-array-last предоставляет полифиллы для PHP 7.3 — PHP 8.4.

composer require polyfills/array-first-array-last

Влияние на обратную совместимость

Существующие PHP-приложения, объявляющие собственные функции array_first и array_last, будут вызывать фатальные ошибки при попытке повторного объявления этих функций. Такие приложения должны либо удалить свои собственные объявления, либо переименовать функции, либо добавить пространство имён.

Для других приложений это изменение не вызывает проблем с обратной совместимостью.

Кроме того, существует полифилл этих функций.

Комментарии


Дополнительные материалы

Предыдущая Статья

PHP 8.5: Новые возможности и изменения

Следующая Статья

Когда определяется this в JavaScript