- Функция partition($collection, callable $callback)
- Функция every($collection, callable $callback = null)
- Функция groupBy($collection, callable $callback)
- Функция minValue($collection, callable $callback)
Библиотека Funct, которую мы рассматривали ранее, кроме обычных функций содержит функции высшего порядка. В этом уроке мы рассмотрим некоторые из них, которые могут быть полезными в будущем.
Функция partition($collection, callable $callback)
Разбивает массив на два на основании предиката. В первый массив попадают элементы, которые удовлетворяют предикату, во второй массив попадают все остальные:
<?php
[$first, $second] = Collection\partition([1, 2, 3, 4, 5, 6, 7, 8, 9], function ($num) {
return $num % 2 === 0;
}); // [[2, 4, 6, 8], [1, 3, 5, 7, 9]]
print_r($first); // => [2, 4, 6, 8]
print_r($second); // => [1, 3, 5, 7, 9]
Функция every($collection, callable $callback = null)
Возвращает true
, если каждый элемент коллекции удовлетворяет предикату. По умолчанию проверяет на истинность (== true
):
<?php
Collection\every([true, 1, null, 'yes']); // false
Collection\every([true, 1, 'yes']); // true
Collection\every(
[2, 4, 6],
function ($value) {
return ($value % 2) === 0;
}
); // true
Функция groupBy($collection, callable $callback)
Группирует элементы коллекции в множества на основании ключа, полученного в результате вызова колбека:
<?php
Collection\groupBy([1.3, 2.1, 2.4], function($num) {
return floor($num);
}); // [1 => [1.3], 2 => [2.1, 2.4]]
Функция minValue($collection, callable $callback)
Возвращает минимальный элемент коллекции на основании результата переданной функции. Если несколько разнотипных значений посчитаются идентичными, функция вернет последнее из них:
<?php
Collection\minValue(
[
10 => [
'title' => 'a',
'size' => 1
],
20 => [
'title' => 'b',
'size' => 2
],
30 => [
'title' => 'c',
'size' => 3
],
40 => [
'title' => 'd',
'size' => 1
],
],
function ($item) {
return $item['size'];
}
);
# Array (
# 'title' => 'd',
# 'size' => 1
# )
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.