Интерфейс ResultSetInterface
Описывает, как должна выглядеть коллекция результатов источника данных
Краткое описание методов
-
append() public
Возвращает новую коллекцию, полученную путем конкатенации списка элементов этой коллекции со списком переданных элементов.
-
appendItem() public
Добавляет один элемент, создавая новую коллекцию.
-
avg() public
Возвращает среднее значение всех значений, извлеченных с помощью $path, или из этой коллекции.
-
buffered() public
Возвращает новую коллекцию, где операции, выполняемые этой коллекцией, буферизированы. Независимо от того, сколько раз новая коллекция итерируется, эти операции будут выполнены только один раз.
-
cartesianProduct() public
Создает новую коллекцию, которая является декартовым произведением текущей коллекции.
-
chunk() public
Разбивает коллекцию на меньшие массивы заданного размера.
-
chunkWithKeys() public
Разбивает коллекцию на меньшие массивы заданного размера.
-
combine() public
Возвращает новую коллекцию, где значения извлекаются на основе пути к значению и затем индексируются по пути к ключу. Дополнительно этот метод может создавать родительские группы на основе пути к свойству группы.
-
compile() public
Итерирует все элементы в этой коллекции один раз, выполняет все сохраненные операции над ними и, наконец, возвращает новую коллекцию с результатом. Это полезно для преобразования необратимых внутренних итераторов в коллекцию, которая может быть перемотана и использована несколько раз.
-
contains() public
Возвращает true, если $value присутствует в этой коллекции. Сравнения выполняются по значению и типу.
-
count() public
Возвращает количество элементов в коллекции.
-
countBy() public
Сортирует список в группы и возвращает подсчет количества элементов в каждой группе. Аналогично groupBy, но вместо возврата списка значений возвращает подсчет количества значений в данной группе.
-
countKeys() public
Возвращает количество уникальных ключей в этом итераторе. Это равно количеству элементов в коллекции после вызова
toArray(). -
each() public
Применяет обратный вызов к элементам в этой коллекции.
-
every() public
Возвращает true, если все значения в этой коллекции проходят проверку, заданную в обратном вызове.
-
extract() public
Возвращает новую коллекцию, содержащую значения столбца или свойства, найденные в каждом из элементов.
-
filter() public
Просматривает каждое значение в коллекции и возвращает другую коллекцию со всеми значениями, которые проходят проверку. Только значения, для которых обратный вызов возвращает true, будут присутствовать в результирующей коллекции.
-
first() public
Возвращает первый результат в этой коллекции.
-
firstMatch() public
Возвращает первый результат, соответствующий всем парам ключ-значение, указанным в условиях.
-
groupBy() public
Разбивает коллекцию на наборы, сгруппированные по результату выполнения каждого значения через обратный вызов. Если $callback — строка, а не вызываемый объект, группирует по свойству, указанному в $callback, для каждого из значений.
-
indexBy() public
На основе списка и функции обратного вызова, возвращающей ключ для каждого элемента в списке (или имя свойства), возвращает объект с индексом каждого элемента. Подобно groupBy, но для случаев, когда ключи уникальны.
-
insert() public
Возвращает новую коллекцию, содержащую каждый из элементов, найденных в
$values, как свойство внутри соответствующих элементов в этой коллекции. Свойство, куда будут вставлены значения, описывается параметром$path. -
isEmpty() public
Возвращает true, если в этой коллекции нет элементов.
-
jsonSerialize() public
Возвращает данные, которые можно преобразовать в JSON. Это возвращает те же данные, что и
toArray(), которые содержат только уникальные ключи. -
last() public
Возвращает последний результат в этой коллекции.
-
lazy() public
Возвращает новую коллекцию, где любые операции, присоединенные к ней, гарантированно будут выполняться лениво. То есть, элементы будут возвращаться по одному.
-
listNested() public
Возвращает новую коллекцию с каждым из элементов этой коллекции после выравнивания структуры дерева. Структура дерева определяется вложением элементов под ключом с известным именем. Указать такое имя можно с помощью параметра '$nestingKey'.
-
map() public
Возвращает другую коллекцию после изменения каждого значения в этой коллекции с помощью предоставленной функции.
-
match() public
Просматривает каждое значение в списке и возвращает коллекцию всех значений, которые содержат все пары ключ-значение, указанные в $conditions.
-
max() public
Возвращает верхний элемент в этой коллекции после сортировки по свойству. Для получения информации об обратном вызове и параметрах $sort см. метод sortBy.
-
median() public
Возвращает медиану всех значений, извлеченных с помощью $path, или из этой коллекции.
-
min() public
Возвращает нижний элемент в этой коллекции после сортировки по свойству. Для получения информации об обратном вызове и параметрах $sort см. метод sortBy.
-
nest() public
Возвращает новую коллекцию, где значения вложены в структуру дерева на основе пути к свойству id и пути к свойству родительского id.
-
prepend() public
Добавляет набор элементов в начало коллекции, создавая новую коллекцию.
-
prependItem() public
Добавляет один элемент в начало, создавая новую коллекцию.
-
reduce() public
Сворачивает значения в этой коллекции в одно значение, как результат применения функции обратного вызова ко всем элементам. $zero — начальное состояние сворачивания, а каждая последующая его ступень должна возвращаться функцией обратного вызова. Если $zero опущено, первое значение коллекции используется вместо него, а сворачивание начинается со второго элемента.
-
reject() public
Просматривает каждое значение в коллекции и возвращает другую коллекцию со всеми значениями, которые не проходят проверку. Это противоположно
filter. -
sample() public
Возвращает новую коллекцию с максимальным количеством $size случайных элементов из этой коллекции.
-
shuffle() public
Возвращает новую коллекцию с элементами в случайном порядке, эта функция не сохраняет исходные ключи в коллекции.
-
skip() public
Возвращает новую коллекцию, которая пропустит указанное количество элементов в начале итерации.
-
some() public
Возвращает true, если хотя бы одно из значений в этой коллекции проходит проверку, заданную в обратном вызове.
-
sortBy() public
Возвращает отсортированный итератор элементов в этой коллекции, отсортированных по возрастанию результатов выполнения каждого значения через обратный вызов. $callback также может быть строкой, представляющей имя столбца или свойства.
-
stopWhen() public
Создаёт новую коллекцию, которая при итерации прекратит выдачу результатов, если предоставленное условие примет значение true.
-
sumOf() public
Возвращает общую сумму всех значений, извлечённых с помощью $matcher или из этой коллекции.
-
take() public
Возвращает новую коллекцию с максимальным количеством $size элементов в внутреннем порядке, в котором была создана эта коллекция. Если передаётся второй параметр, он определит, с какой позиции начинать взятие элементов.
-
takeLast() public
Возвращает последние N элементов коллекции
-
through() public
Пропускает эту коллекцию через вызываемую функцию в качестве первого аргумента. Это полезно для декорирования всей коллекции другим объектом.
-
toArray() public
Возвращает массивное представление результатов
-
toList() public
Возвращает массивное представление результатов с числовыми индексами. Это эквивалентно вызову
toArray(false) -
transpose() public
Транспонирует строки и столбцы в столбцы и строки
-
unfold() public
Создает новую коллекцию, где элементы являются результатом конкатенации списков элементов, сгенерированных функцией-трансформером, применённой к каждому элементу в исходной коллекции.
-
unwrap() public
Возвращает ближайший вложенный итератор, который можно безопасно пройти, не теряя возможных преобразований. Это используется в основном для удаления пустых обёрток IteratorIterator, которые могут только замедлить процесс итерации.
-
zip() public
Объединяет элементы этой коллекции с каждым из элементов переданных итерабельных, используя их позиционный индекс в качестве ссылки.
-
zipWith() public
Объединяет элементы этой коллекции с каждым из элементов переданных итерабельных, используя их позиционный индекс в качестве ссылки.
Подробное описание методов
append() public
append(iterable $items): self
Возвращает новую коллекцию в результате конкатенации списка элементов в этой коллекции со списком переданных элементов
Параметры
-
iterable$items Список элементов.
Возвращает
selfappendItem() public
appendItem(mixed $item, mixed $key = null): self
Добавляет один элемент, создавая новую коллекцию.
Параметры
-
mixed$item Элемент для добавления.
-
mixed$key optional Ключ для добавления элемента. Если null, ключ будет сгенерирован.
Возвращает
selfavg() public
avg(string|callable|null $path = null): float|int|null
Возвращает среднее значение всех значений, извлеченных с помощью $path или из этой коллекции.
Пример:
$items = [
['invoice' => ['total' => 100]],
['invoice' => ['total' => 200]]
];
$total = (new Collection($items))->avg('invoice.total');
// Total: 150
$total = (new Collection([1, 2, 3]))->avg();
// Total: 2 Среднее пустого набора или 0 строк равно null. Коллекции с null значениями не считаются пустыми.
Параметры
-
string|callable|null$path optional Имя свойства для суммирования или функция. Если значение не указано, будет использована функция идентичности, которая возвращает значение свойства для суммирования.
Возвращает
float|int|nullbuffered() public
buffered(): self
Возвращает новую коллекцию, где операции, выполняемые этой коллекцией, выполняются только один раз, независимо от того, сколько раз новая коллекция будет итерироваться.
Это также можно использовать для преобразования любого необратимого итератора в обратимый.
Возвращает
selfcartesianProduct() public
cartesianProduct(callable|null $operation = null, callable|null $filter = null): self
Создаёт новую коллекцию, являющуюся декартовым произведением текущей коллекции.
Для создания декартова произведения коллекция должна содержать данные только одного измерения.
Пример
$collection = new Collection([['A', 'B', 'C'], [1, 2, 3]]);
$result = $collection->cartesianProduct()->toArray();
$expected = [
['A', 1],
['A', 2],
['A', 3],
['B', 1],
['B', 2],
['B', 3],
['C', 1],
['C', 2],
['C', 3],
]; Параметры
-
callable|null$operation optional Вызываемый объект, позволяющий настроить результат произведения.
-
callable|null$filter optional Функция фильтрации, которая должна возвращать true, чтобы результат был частью окончательных результатов.
Возвращает
selfchunk() public
chunk(int $chunkSize): self
Разбивает коллекцию на меньшие массивы заданного размера.
Пример:
$items [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; $chunked = (new Collection($items))->chunk(3)->toList(); // Returns [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]
Параметры
-
int$chunkSize Максимальный размер каждого фрагмента.
Возвращает
selfchunkWithKeys() public
chunkWithKeys(int $chunkSize, bool $preserveKeys = true): self
Разбивает коллекцию на меньшие массивы заданного размера.
Пример:
$items ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5, 'f' => 6]; $chunked = (new Collection($items))->chunkWithKeys(3)->toList(); // Returns [['a' => 1, 'b' => 2, 'c' => 3], ['d' => 4, 'e' => 5, 'f' => 6]]
Параметры
-
int$chunkSize Максимальный размер каждого фрагмента.
-
bool$preserveKeys optional Если ключи массива должны быть сохранены.
Возвращает
selfcombine() public
combine(callable|string $keyPath, callable|string $valuePath, callable|string|null $groupPath = null): self
Возвращает новую коллекцию, где значения извлекаются на основе пути к значению, а затем индексируются по пути к ключу. Этот метод может также создавать группы родительских элементов на основе пути к свойству группы.
Примеры:
$items = [
['id' => 1, 'name' => 'foo', 'parent' => 'a'],
['id' => 2, 'name' => 'bar', 'parent' => 'b'],
['id' => 3, 'name' => 'baz', 'parent' => 'a'],
];
$combined = (new Collection($items))->combine('id', 'name');
// Result will look like this when converted to array
[
1 => 'foo',
2 => 'bar',
3 => 'baz',
];
$combined = (new Collection($items))->combine('id', 'name', 'parent');
// Result will look like this when converted to array
[
'a' => [1 => 'foo', 3 => 'baz'],
'b' => [2 => 'bar']
]; Параметры
-
callable|string$keyPath путь к имени столбца для индексирования или функция, возвращающая ключ индексирования из предоставленного элемента.
-
callable|string$valuePath путь к имени столбца для использования в качестве значения массива или функция, возвращающая значение из предоставленного элемента.
-
callable|string|null$groupPath optional путь к имени столбца для использования в качестве родительского группировочного ключа или функция, возвращающая ключ из предоставленного элемента.
Возвращает
selfcompile() public
compile(bool $preserveKeys = true): self
Один раз итерирует все элементы в этой коллекции, выполняет все связанные с ними операции и, наконец, возвращает новую коллекцию с результатом. Это полезно для преобразования необратимых внутренних итераторов в коллекцию, которую можно перемотать и использовать несколько раз.
Типичный случай использования — повторное использование одной и той же переменной для вычисления различных данных. В таких случаях может быть полезно и эффективнее сначала скомпилировать коллекцию, а затем применить к ней дополнительные операции.
Пример:
$collection->map($mapper)->sortBy('age')->extract('name');
$compiled = $collection->compile();
$isJohnHere = $compiled->some($johnMatcher);
$allButJohn = $compiled->filter($johnMatcher); В приведенном выше примере, если бы коллекция не была скомпилирована предварительно, итерации для map, sortBy и extract были бы выполнены дважды: один раз для получения $isJohnHere и один раз для $allButJohn.
Можно рассматривать этот метод как способ создания точек сохранения для сложных вычислений в коллекции.
Параметры
-
bool$preserveKeys optional использовать ли ключи, возвращаемые этой коллекцией, в качестве ключей массива. Имейте в виду, что итераторы могут возвращать один и тот же ключ для разных элементов, установка этого значения в false может помочь получить все элементы, если ключи не важны в результате.
Возвращает
selfcontains() public
contains(mixed $value): bool
Возвращает true, если $value присутствует в этой коллекции. Сравнения производятся по значению и типу.
Параметры
-
mixed$value Проверяемое значение.
Возвращает
boolcount() public
count(): int
Возвращает количество элементов в коллекции.
ПРЕДУПРЕЖДЕНИЯ:
Изменяет текущую позицию итератора:
Вызов этого метода во время итерирования этой коллекции, например, в цикле foreach, приведет к неопределённому поведению. Избегайте этого.
Потребляет все элементы для коллекций NoRewindIterator:
Для определённых типов коллекций вызов этого метода может сделать их непригодными для дальнейшего использования. То есть, вы можете не получить элементы или не сможете больше итерировать по ним.
В частности, любая коллекция, обертывающая генератор (функцию с оператором yield) или небуферизованный курсор базы данных, не примет никаких других вызовов функций после вызова count() на ней.
Создайте новую коллекцию с помощью метода buffered(), чтобы решить эту проблему.
Может сообщать о большем количестве элементов, чем уникальных ключей:
Любая коллекция, созданная путём добавления коллекций друг к другу или имеющая внутренние итераторы, возвращающие дублирующие ключи, будет сообщать о большем количестве элементов с помощью этой функции, чем фактическое количество элементов при преобразовании коллекций в массив с ключами. Это происходит потому, что дублирующие ключи объединяются в один в конечном массиве, в то время как метод count учитывает только количество элементов после преобразования в обычный список.
Если вам нужен счёт элементов с учётом ключей (количество уникальных ключей), вы можете вызвать countKeys().
Возвращает
intcountBy() public
countBy(callable|string $path): self
Сортирует список по группам и возвращает количество элементов в каждой группе. Аналогично groupBy, но вместо возвращения списка значений возвращает количество значений в каждой группе.
Если $callback — строка, она должна быть именем свойства для извлечения или путём свойств, разделённых точками, которые нужно пройти, чтобы получить последнее из них.
Пример:
$items = [
['id' => 1, 'name' => 'foo', 'parent_id' => 10],
['id' => 2, 'name' => 'bar', 'parent_id' => 11],
['id' => 3, 'name' => 'baz', 'parent_id' => 10],
];
$group = (new Collection($items))->countBy('parent_id');
// Or
$group = (new Collection($items))->countBy(function ($e) {
return $e['parent_id'];
});
// Result will look like this when converted to array
[
10 => 2,
11 => 1
]; Параметры
-
callable|string$path Имя столбца для индексирования или функция, возвращающая значение. или функция, возвращающая индексный ключ из предоставленного элемента.
Возвращает
selfcountKeys() public
countKeys(): int
Возвращает количество уникальных ключей в этом итераторе. Это то же самое, что и количество элементов в коллекции после вызова toArray().
Этот метод имеет ряд ограничений. Подробную информацию см. в CollectionInterface::count().
Возвращает
intСм. также
each() public
each(callable $callback): $this
Применяет обратный вызов к элементам в этом наборе.
Пример:
$collection = (new Collection($items))->each(function ($value, $key) {
echo "Element $key: $value";
}); Параметры
-
callable$callback Обратный вызов для выполнения для каждого элемента в наборе.
Возвращает
$thisevery() public
every(callable $callback): bool
Возвращает true, если все значения в этом наборе проходят проверку истинности, заданную в обратном вызове.
Каждый раз, когда вызывается обратный вызов, он получает значение элемента в текущей итерации и ключ элемента в качестве аргументов в этом порядке.
Пример:
$overTwentyOne = (new Collection([24, 45, 60, 15]))->every(function ($value, $key) {
return $value > 21;
}); Пустые наборы всегда возвращают true, потому что это пустая истинность.
Параметры
-
callable$callback функция обратного вызова
Возвращает
boolextract() public
extract(string|callable $path): self
Возвращает новый набор, содержащий значение столбца или свойства, найденное в каждом из элементов.
Матч может быть строкой с именем свойства для извлечения или путем свойств, разделенных точками, за которым следует последнее в пути.
Если столбец или свойство не могут быть найдены для конкретного элемента в наборе, эта позиция заполняется null.
Пример:
Извлеките имя пользователя для всех комментариев в массиве:
$items = [
['comment' => ['body' => 'cool', 'user' => ['name' => 'Mark']],
['comment' => ['body' => 'very cool', 'user' => ['name' => 'Renan']]
];
$extracted = (new Collection($items))->extract('comment.user.name');
// Result will look like this when converted to array
['Mark', 'Renan'] Также можно извлечь уплощенный набор из вложенных свойств
$items = [
['comment' => ['votes' => [['value' => 1], ['value' => 2], ['value' => 3]]],
['comment' => ['votes' => [['value' => 4]]
];
$extracted = (new Collection($items))->extract('comment.votes.{*}.value');
// Result will contain
[1, 2, 3, 4] Параметры
-
string|callable$path Путь, разделенный точками, столбца для следования, чтобы можно было вернуть последнее или вызываемый, который позаботится об этом.
Возвращает
selffilter() public
filter(callable|null $callback = null): self
Просматривает каждое значение в наборе и возвращает другой набор со всеми значениями, которые проходят проверку истинности. Только те значения, для которых обратный вызов возвращает true, будут присутствовать в результирующем наборе.
Каждый раз, когда вызывается обратный вызов, он получает значение элемента в текущей итерации, ключ элемента и этот набор в качестве аргументов в указанном порядке.
Пример:
Фильтрация нечетных чисел в массиве, в конце только значение 2 будет присутствовать в результирующем наборе:
$collection = (new Collection([1, 2, 3]))->filter(function ($value, $key) {
return $value % 2 === 0;
}); Параметры
-
callable|null$callback optional метод, который получит каждый из элементов и вернет true, если они должны быть в результирующем наборе. Если оставлен null, будет использоваться обратный вызов, который отфильтровывает ложные значения.
Возвращает
selffirst() public
first(): mixed
Возвращает первый результат в этом наборе
Возвращает
mixedfirstMatch() public
firstMatch(array $conditions): mixed
Возвращает первый результат, соответствующий всем парам ключ-значение, указанным в условиях.
Параметры
-
array$conditions список условий ключ-значение, где ключ — путь к свойству, принимаемый
Collection::extract, а значение — условие, по которому будет сопоставляться каждый элемент
Возвращает
mixedСм. также
groupBy() public
groupBy(callable|string $path): self
Разбивает набор на группы, сгруппированные по результату запуска каждого значения через обратный вызов. Если $callback — строка вместо вызываемого объекта, группирует по имени свойства $callback каждого из значений.
Когда $callback — строка, это должно быть имя свойства для извлечения или путь к свойствам, разделенным точками, который должен быть пройден, чтобы получить последнее в пути.
Пример:
$items = [
['id' => 1, 'name' => 'foo', 'parent_id' => 10],
['id' => 2, 'name' => 'bar', 'parent_id' => 11],
['id' => 3, 'name' => 'baz', 'parent_id' => 10],
];
$group = (new Collection($items))->groupBy('parent_id');
// Or
$group = (new Collection($items))->groupBy(function ($e) {
return $e['parent_id'];
});
// Result will look like this when converted to array
[
10 => [
['id' => 1, 'name' => 'foo', 'parent_id' => 10],
['id' => 3, 'name' => 'baz', 'parent_id' => 10],
],
11 => [
['id' => 2, 'name' => 'bar', 'parent_id' => 11],
]
]; Параметры
-
callable|string$path Имя столбца для группировки или обратный вызов, возвращающий значение. или функция, возвращающая ключ группировки из предоставленного элемента
Возвращает
selfindexBy() public
indexBy(callable|string $path): self
Учитывая список и функцию обратного вызова, которая возвращает ключ для каждого элемента в списке (или имя свойства), возвращает объект с индексом каждого элемента. То же, что и groupBy, но для случаев, когда вы знаете, что ваши ключи уникальны.
Когда $callback — строка, это должно быть имя свойства для извлечения или путь к свойствам, разделенным точками, который должен быть пройден, чтобы получить последнее в пути.
Пример:
$items = [
['id' => 1, 'name' => 'foo'],
['id' => 2, 'name' => 'bar'],
['id' => 3, 'name' => 'baz'],
];
$indexed = (new Collection($items))->indexBy('id');
// Or
$indexed = (new Collection($items))->indexBy(function ($e) {
return $e['id'];
});
// Result will look like this when converted to array
[
1 => ['id' => 1, 'name' => 'foo'],
3 => ['id' => 3, 'name' => 'baz'],
2 => ['id' => 2, 'name' => 'bar'],
]; Параметры
-
callable|string$path Имя столбца для индексирования или обратный вызов, возвращающий значение. или функция, возвращающая ключевое слово индексирования из предоставленного элемента
Возвращает
selfinsert() public
insert(string $path, mixed $values): self
Возвращает новый набор, содержащий каждый из элементов, найденных в $values в качестве свойства внутри соответствующих элементов в этом наборе. Свойство, куда будут вставлены значения, описано параметром $path.
Путь $path может быть строкой с именем свойства или путем свойств, разделенных точками, которые должны быть пройдены, чтобы получить последнее в пути.
Если столбец или свойство не могут быть найдены для конкретного элемента в наборе как часть пути, элемент останется неизменным.
Пример:
Вставка возрастов в набор, содержащий пользователей:
$items = [
['comment' => ['body' => 'cool', 'user' => ['name' => 'Mark']],
['comment' => ['body' => 'awesome', 'user' => ['name' => 'Renan']]
];
$ages = [25, 28];
$inserted = (new Collection($items))->insert('comment.user.age', $ages);
// Result will look like this when converted to array
[
['comment' => ['body' => 'cool', 'user' => ['name' => 'Mark', 'age' => 25]],
['comment' => ['body' => 'awesome', 'user' => ['name' => 'Renan', 'age' => 28]]
]; Параметры
-
string$path строка, разделенная точками, обозначающая путь для следования внутри иерархии каждого значения, чтобы значение могло быть вставлено
-
mixed$values значения, которые должны быть вставлены по указанному пути; значения сопоставляются с элементами в этом наборе по их позиционному индексу.
Возвращает
selfisEmpty() public
isEmpty(): bool
Возвращает, есть ли элементы в этом наборе
Пример:
$items [1, 2, 3]; (new Collection($items))->isEmpty(); // false
(new Collection([]))->isEmpty(); // true
Возвращает
booljsonSerialize() public
jsonSerialize(): array
Возвращает данные, которые могут быть преобразованы в JSON. Это возвращает те же данные, что и toArray(), которые содержат только уникальные ключи.
Часть интерфейса JsonSerializable.
Возвращает
arraylast() public
last(): mixed
Возвращает последний результат в этом наборе
Возвращает
mixedlazy() public
lazy(): self
Возвращает новый набор, где любые операции, присоединенные к нему, гарантированно выполняются лениво. То есть элементы будут возвращаться по одному.
Ленивый набор можно итерировать только один раз. Вторая попытка приводит к ошибке.
Возвращает
selflistNested() public
listNested(string|int $order = 'desc', string|callable $nestingKey = 'children'): self
Возвращает новый набор с каждым из элементов этого набора после уплощения структуры дерева. Структура дерева определяется вложением элементов под ключом с известным именем. Это имя можно указать, используя параметр '$nestingKey'.
По умолчанию возвращаются все элементы дерева, следуя поиску в глубину (Depth First Search), то есть элементы от родительского узла к листьям для каждой ветви.
Возвращение всех элементов снизу вверх можно выполнить с помощью поиска в ширину (Breadth First Search), передав параметр '$dir' со значением 'asc'. То есть, он вернет все элементы для каждого уровня дерева в первую очередь и снизу вверх.
Наконец, вы можете указать, чтобы получить набор только с узлами-листьями в структуре дерева. Для этого передайте 'leaves' в первый аргумент.
Возможные значения для первого аргумента — псевдонимы следующих констант, и вместо псевдонима можно передать эти константы:
- desc: RecursiveIteratorIterator::SELF_FIRST
- asc: RecursiveIteratorIterator::CHILD_FIRST
- leaves: RecursiveIteratorIterator::LEAVES_ONLY
Пример:
$collection = new Collection([
['id' => 1, 'children' => [['id' => 2, 'children' => [['id' => 3]]]]],
['id' => 4, 'children' => [['id' => 5]]]
]);
$flattenedIds = $collection->listNested()->extract('id'); // Yields [1, 2, 3, 4, 5] Параметры
-
string|int$order optional Порядок возврата элементов
-
string|callable$nestingKey optional Имя ключа, под которым вложены дочерние элементы, или функция, которая вернет список дочерних элементов
Возвращает
selfmap() public
map(callable $callback): self
Возвращает другую коллекцию после модификации каждого значения в этой коллекции с помощью предоставленного вызываемого объекта.
Каждый раз при выполнении обратного вызова он будет получать значение элемента в текущей итерации, ключ элемента и эту коллекцию в качестве аргументов в указанном порядке.
Пример:
Получение коллекции булевых значений, где true указывает, является ли человек женщиной:
$collection = (new Collection($people))->map(function ($person, $key) {
return $person->gender === 'female';
}); Параметры
-
callable$callback метод, который получит каждый из элементов и вернет новое значение для ключа, по которому идет итерация
Возвращает
selfmatch() public
match(array $conditions): self
Просматривает каждое значение в списке, возвращая коллекцию всех значений, которые содержат все пары ключ-значение, перечисленные в $conditions.
Пример:
$items = [ ['comment' => ['body' => 'cool', 'user' => ['name' => 'Mark']], ['comment' => ['body' => 'very cool', 'user' => ['name' => 'Renan']] ]; $extracted = (new Collection($items))->match(['user.name' => 'Renan']); // Result will look like this when converted to array [ ['comment' => ['body' => 'very cool', 'user' => ['name' => 'Renan']] ]
Параметры
-
array$conditions список пар ключ-значение условий, где ключ — путь к свойству, принятый `Collection::extract`, а значение — условие, с которым будет сопоставлен каждый элемент
Возвращает
selfmax() public
max(callable|string $path, int $sort = \SORT_NUMERIC): mixed
Возвращает верхний элемент в этой коллекции после сортировки по свойству. См. метод sortBy для получения информации о вызываемом объекте и параметре $sort.
Примеры:
// For a collection of employees
$max = $collection->max('age');
$max = $collection->max('user.salary');
$max = $collection->max(function ($e) {
return $e->get('user')->get('salary');
});
// Display employee name
echo $max->name; Параметры
-
callable|string$path Имя столбца для сортировки или обратный вызов, возвращающий значение.
-
int$sort optional Тип сортировки, один из SORT_STRING, SORT_NUMERIC или SORT_NATURAL.
Возвращает
mixedСм. также
median() public
median(string|callable|null $path = null): float|int|null
Возвращает медиану всех значений, извлеченных с помощью $path, или этой коллекции.
Пример:
$items = [
['invoice' => ['total' => 400]],
['invoice' => ['total' => 500]]
['invoice' => ['total' => 100]]
['invoice' => ['total' => 333]]
['invoice' => ['total' => 200]]
];
$total = (new Collection($items))->median('invoice.total');
// Total: 333
$total = (new Collection([1, 2, 3, 4]))->median();
// Total: 2.5 Медиана пустого набора или 0 строк равна null. Коллекции с null значениями не считаются пустыми.
Параметры
-
string|callable|null$path optional Имя свойства для суммирования или функция. Если значение не указано, будет использована функция тождества. которая возвращает значение свойства для суммирования.
Возвращает
float|int|nullmin() public
min(callable|string $path, int $sort = \SORT_NUMERIC): mixed
Возвращает нижний элемент в этой коллекции после сортировки по свойству. См. метод sortBy для получения информации о вызываемом объекте и параметре $sort.
Примеры:
// For a collection of employees
$min = $collection->min('age');
$min = $collection->min('user.salary');
$min = $collection->min(function ($e) {
return $e->get('user')->get('salary');
});
// Display employee name
echo $min->name; Параметры
-
callable|string$path Имя столбца для сортировки или обратный вызов, возвращающий значение.
-
int$sort optional Тип сортировки, один из SORT_STRING, SORT_NUMERIC или SORT_NATURAL.
Возвращает
mixedСм. также
nest() public
nest(callable|string $idPath, callable|string $parentPath, string $nestingKey = 'children'): self
Возвращает новую коллекцию, где значения вложены в структуру типа дерево на основе пути к свойству id и пути к свойству родительского id.
Параметры
-
callable|string$idPath путь к имени столбца для определения, является ли элемент родителем другого
-
callable|string$parentPath путь к имени столбца для определения, является ли элемент дочерним элементом другого
-
string$nestingKey optional Имя ключа, под которым вложены дочерние элементы
Возвращает
selfprepend() public
prepend(mixed $items): self
Добавляет набор элементов в начало коллекции, создавая новую коллекцию.
Параметры
-
mixed$items Элементы для добавления в начало.
Возвращает
selfprependItem() public
prependItem(mixed $item, mixed $key = null): self
Добавляет один элемент в начало, создавая новую коллекцию.
Параметры
-
mixed$item Элемент для добавления в начало.
-
mixed$key optional Ключ для добавления элемента. Если null, будет сгенерирован ключ.
Возвращает
selfreduce() public
reduce(callable $callback, mixed $initial = null): mixed
Сворачивает значения в этой коллекции в одно значение, как результат применения функции обратного вызова ко всем элементам. $zero — начальное состояние свертки, и каждый последующий шаг должен возвращаться функцией обратного вызова. Если $zero опущен, первое значение коллекции будет использовано вместо него, а свертка начнется со второго элемента.
Параметры
-
callable$callback Функция обратного вызова для вызова
-
mixed$initial optional Состояние свертки
Возвращает
mixedreject() public
reject(callable $callback): self
Просматривает каждое значение в коллекции и возвращает другую коллекцию со всеми значениями, которые не проходят проверку истинности. Это противоположно filter.
Каждый раз при выполнении обратного вызова он будет получать значение элемента в текущей итерации, ключ элемента и эту коллекцию в качестве аргументов в указанном порядке.
Пример:
Фильтрация четных чисел в массиве, в результате в конечной коллекции будут только значения 1 и 3:
$collection = (new Collection([1, 2, 3]))->reject(function ($value, $key) {
return $value % 2 === 0;
}); Параметры
-
callable$callback метод, который получит каждый из элементов и вернет true, если они должны быть исключены из результирующей коллекции.
Возвращает
selfsample() public
sample(int $length = 10): self
Возвращает новую коллекцию с максимальным числом $size случайных элементов из этой коллекции.
Параметры
-
int$length optional максимальное количество элементов для случайного выбора из этой коллекции
Возвращает
selfshuffle() public
shuffle(): self
Возвращает новую коллекцию с элементами в случайном порядке. Эта функция не сохраняет исходные ключи в коллекции.
Возвращает
selfskip() public
skip(int $length): self
Возвращает новую коллекцию, которая пропустит указанное количество элементов в начале итерации.
Параметры
-
int$length Количество элементов для пропуска.
Возвращает
selfsome() public
some(callable $callback): bool
Возвращает true, если любое из значений в этой коллекции проходит проверку истинности, указанную в обратном вызове.
Каждый раз при выполнении обратного вызова он будет получать значение элемента в текущей итерации и ключ элемента в качестве аргументов в указанном порядке.
Пример:
$hasYoungPeople = (new Collection([24, 45, 15]))->every(function ($value, $key) {
return $value < 21;
}); Параметры
-
callable$callback Функция обратного вызова
Возвращает
boolsortBy() public
sortBy(callable|string $path, int $order = SORT_DESC, int $sort = \SORT_NUMERIC): self
Возвращает отсортированный итератор элементов в этом наборе, отсортированных по возрастанию результатов применения к каждому значению обратного вызова. $callback также может быть строкой, представляющей имя столбца или свойства.
Обратный вызов получит в качестве первого аргумента каждый из элементов в $items, а значение, возвращаемое обратным вызовом, будет использоваться как значение для сортировки такого элемента. Обратите внимание, что функция обратного вызова может вызываться более одного раза для каждого элемента.
Пример:
$items = $collection->sortBy(function ($user) {
return $user->age;
});
// alternatively
$items = $collection->sortBy('age');
// or use a property path
$items = $collection->sortBy('department.name');
// output all user name order by their age in descending order
foreach ($items as $user) {
echo $user->name;
} Параметры
-
callable|string$path Имя столбца для сортировки или обратный вызов, возвращающий значение.
-
int$order optional Порядок сортировки, либо SORT_DESC, либо SORT_ASC
-
int$sort optional Тип сортировки, один из SORT_STRING, SORT_NUMERIC или SORT_NATURAL
Возвращает
selfstopWhen() public
stopWhen(callable|array $condition): self
Создаёт новый набор, который при итерации прекратит выводить результаты, если предоставленное условие истинно.
Это удобно для работы с бесконечными итераторами или любым генератором, который может начать возвращать некорректные элементы в определённый момент. Например, при чтении строк из потока файла вы можете остановить итерацию после достижения определённого значения.
Пример:
Получить массив строк в файле CSV до тех пор, пока столбец со временем не станет меньше определённой даты
$lines = (new Collection($fileLines))->stopWhen(function ($value, $key) {
return (new DateTime($value))->format('Y') < 2012;
})
->toArray(); Получить элементы до тех пор, пока не будет найден первый неутверждённый элемент сообщения:
$comments = (new Collection($comments))->stopWhen(['is_approved' => false]);
Параметры
-
callable|array$condition метод, который получит каждый из элементов и вернёт true, когда итерация должна быть остановлена. Если массив, он будет интерпретирован как список условий ключ-значение, где ключ - путь к свойству, как принимается
Collection::extract, а значение - условие, которое будет проверяться для каждого элемента.
Возвращает
selfsumOf() public
sumOf(string|callable|null $path = null): float|int
Возвращает общую сумму всех значений, извлечённых с помощью $matcher или этого набора.
Пример:
$items = [
['invoice' => ['total' => 100]],
['invoice' => ['total' => 200]]
];
$total = (new Collection($items))->sumOf('invoice.total');
// Total: 300
$total = (new Collection([1, 2, 3]))->sumOf();
// Total: 6 Параметры
-
string|callable|null$path optional Имя свойства для суммирования или функция, которая вернёт значение свойства для суммирования. Если значение не указано, будет использована функция тождества.
Возвращает
float|inttake() public
take(int $length = 1, int $offset = 0): self
Возвращает новый набор с максимальным количеством $size элементов в внутреннем порядке, в котором этот набор был создан. Если передан второй параметр, он определит, с какой позиции начинать извлечение элементов.
Параметры
-
int$length optional максимальное количество элементов, которые необходимо извлечь из этого набора
-
int$offset optional Позиционный смещение, с которого извлекать элементы
Возвращает
selftakeLast() public
takeLast(int $length): self
Возвращает последние N элементов набора
Пример:
$items = [1, 2, 3, 4, 5]; $last = (new Collection($items))->takeLast(3); // Result will look like this when converted to array [3, 4, 5];
Параметры
-
int$length Количество элементов в конце набора
Возвращает
selfthrough() public
through(callable $callback): self
Пропускает этот набор через вызываемый объект в качестве первого аргумента. Это полезно для украшения всего набора другим объектом.
Пример:
$items = [1, 2, 3];
$decorated = (new Collection($items))->through(function ($collection) {
return new MyCustomCollection($collection);
}); Параметры
-
callable$callback Функция обратного вызова, которая получит этот набор в качестве первого аргумента.
Возвращает
selftoArray() public
toArray(bool $preserveKeys = true): array
Возвращает массив, представляющий результаты.
Параметры
-
bool$preserveKeys optional Необходимо ли использовать ключи, возвращённые этим набором, в качестве ключей массива. Имейте в виду, что итераторы могут возвращать одинаковые ключи для разных элементов, установка этого значения в false может помочь получить все элементы, если ключи не важны в результате.
Возвращает
arraytoList() public
toList(): array
Возвращает массив с числовыми индексами, представляющий результаты. Это эквивалентно вызову toArray(false)
Возвращает
arraytranspose() public
transpose(): self
Транспонирует строки и столбцы в столбцы и строки
Пример:
$items = [
['Products', '2012', '2013', '2014'],
['Product A', '200', '100', '50'],
['Product B', '300', '200', '100'],
['Product C', '400', '300', '200'],
]
$transpose = (new Collection($items))->transpose()->toList();
// Returns
// [
// ['Products', 'Product A', 'Product B', 'Product C'],
// ['2012', '200', '300', '400'],
// ['2013', '100', '200', '300'],
// ['2014', '50', '100', '200'],
// ] Возвращает
selfunfold() public
unfold(callable|null $callback = null): self
Создаёт новый набор, где элементы являются конкатенацией списков элементов, сгенерированных функцией преобразования, применённой к каждому элементу исходного набора.
Функция преобразования получит значение и ключ для каждого элемента в наборе в указанном порядке, и она должна вернуть массив или объект Traversable, который можно конкатенировать с конечным результатом.
Если функция преобразования не передана, будет использована функция «тождества». Это полезно, когда каждый элемент исходного набора является списком элементов, которые необходимо добавить друг за другом.
Пример:
$items [[1, 2, 3], [4, 5]]; $unfold = (new Collection($items))->unfold(); // Returns [1, 2, 3, 4, 5]
Использование функции преобразования
$items [1, 2, 3];
$allItems = (new Collection($items))->unfold(function ($page) {
return $service->fetchPage($page)->toArray();
}); Параметры
-
callable|null$callback optional Функция, которая примет каждый из элементов набора и должна вернуть массив или объект Traversable
Возвращает
selfunwrap() public
unwrap(): Traversable
Возвращает ближайший вложенный итератор, который можно безопасно пройти, не теряя никаких возможных преобразований. Это используется в основном для удаления пустых обёрток IteratorIterator, которые могут только замедлить процесс итерации.
Возвращает
Traversablezip() public
zip(iterable $items): self
Объединяет элементы этого набора с каждым элементом переданных итераторов, используя их позиционный индекс в качестве ссылки.
Пример:
$collection = new Collection([1, 2]); $collection->zip([3, 4], [5, 6])->toList(); // returns [[1, 3, 5], [2, 4, 6]]
Параметры
-
iterable$items Наборы для объединения.
Возвращает
selfzipWith() public
zipWith(iterable $items, callable $callback): self
Объединяет элементы этого набора с каждым элементом переданных итераторов, используя их позиционный индекс в качестве ссылки.
Результат будет значением, возвращённым функцией $callable.
Пример:
$collection = new Collection([1, 2]);
$zipped = $collection->zipWith([3, 4], [5, 6], function (...$args) {
return array_sum($args);
});
$zipped->toList(); // returns [9, 12]; [(1 + 3 + 5), (2 + 4 + 6)] Параметры
-
iterable$items Наборы для объединения.
-
callable$callback Функция для объединения элементов.
Возвращает
self
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.2/interface-Cake.Datasource.ResultSetInterface.html