Интерфейс CollectionInterface
Описывает методы, которые должен реализовывать объект Collection. Коллекция — это неизменяемый список элементов, предоставляющий ряд методов обхода и извлечения для создания других коллекций.
- Cake\Collection\CollectionInterface implements Iterator, JsonSerializable
Прямые реализаторы
Косвенные реализаторы
- Cake\Collection\Iterator\BufferedIterator
- Cake\Collection\Iterator\ExtractIterator
- Cake\Collection\Iterator\FilterIterator
- Cake\Collection\Iterator\InsertIterator
- Cake\Collection\Iterator\NestIterator
- Cake\Collection\Iterator\NoChildrenIterator
- Cake\Collection\Iterator\ReplaceIterator
- Cake\Collection\Iterator\SortIterator
- Cake\Datasource\ResultSetDecorator
- Cake\ORM\ResultSet
Краткое описание методов
- append() public
Возвращает новую коллекцию в результате конкатенации списка элементов в этой коллекции со списком переданных элементов.
- avg() public
Возвращает среднее значение всех значений, извлеченных с помощью $matcher, или этой коллекции.
- buffered() 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
Возвращает новую коллекцию, содержащую столбец или значение свойства, найденное в каждом из элементов, как запрошено в параметре $matcher.
- filter() public
Просматривает каждое значение в коллекции и возвращает другую коллекцию со всеми значениями, которые проходят проверку истинности. Только значения, для которых обратный вызов возвращает true, будут присутствовать в результирующей коллекции.
- first() publicВозвращает первый результат в этой коллекции
- firstMatch() public
Возвращает первый результат, соответствующий всем парам ключ-значение, указанным в условиях.
- groupBy() public
Разбивает коллекцию на множества, сгруппированные по результату выполнения каждого значения через обратный вызов. Если $callback — строка вместо вызываемого объекта, группирует по свойству, названному $callback, для каждого из значений.
- indexBy() public
В данном списке и функции обратного вызова, которая возвращает ключ для каждого элемента в списке (или имя свойства), возвращает объект с индексом каждого элемента. Аналогично groupBy, но для случаев, когда ключи уникальны.
- insert() public
Возвращает новую коллекцию, содержащую каждый из элементов, найденных в
$values, как свойство внутри соответствующих элементов в этой коллекции. Свойство, куда будут вставлены значения, описывается параметром$path - isEmpty() publicВозвращает, есть ли элементы в этой коллекции
- jsonSerialize() publicПреобразует набор результатов в JSON.
- last() publicВозвращает последний результат в этой коллекции
- listNested() public
Возвращает новую коллекцию с каждым из элементов этой коллекции после сглаживания древовидной структуры. Структура дерева определяется вложением элементов под ключом с известным именем. Можно указать такое имя, используя параметр '$nestingKey'.
- map() public
Возвращает другую коллекцию после изменения каждого из значений в этой, используя предоставленный вызываемый объект.
- match() public
Просматривает каждое значение в списке, возвращая коллекцию всех значений, содержащих все пары ключ-значение, перечисленные в $conditions.
- max() public
Возвращает верхний элемент в этой коллекции после сортировки по свойству. См. метод sortBy для получения информации о параметрах callback и $type.
- median() public
Возвращает медиану всех значений, извлеченных с помощью $matcher, или этой коллекции.
- min() public
Возвращает нижний элемент в этой коллекции после сортировки по свойству. См. метод sortBy для получения информации о параметрах callback и $type.
- nest() public
Возвращает новую коллекцию, где значения вложены в древовидную структуру на основе пути к свойству id и пути к свойству родительского id.
- reduce() public
Сворачивает значения в этой коллекции до единственного значения в результате применения функции обратного вызова ко всем элементам. $zero — начальное состояние сокращения, и каждый последующий шаг должен быть возвращен функцией обратного вызова. Если $zero опущен, первое значение коллекции будет использовано вместо него, и сокращение начнется со второго элемента.
- reject() public
Просматривает каждое значение в коллекции и возвращает другую коллекцию со всеми значениями, которые не проходят проверку истинности. Это противоположно
filter. - sample() public
Возвращает новую коллекцию с максимальным $size случайными элементами из этой коллекции.
- shuffle() public
Возвращает новую коллекцию с элементами в случайном порядке, эта функция не сохраняет исходные ключи в коллекции.
- skip() public
Возвращает новую коллекцию, которая пропустит указанное количество элементов в начале итерации.
- some() public
Возвращает true, если хотя бы одно из значений в этой коллекции проходит проверку истинности, указанную в обратном вызове.
- sortBy() public
Возвращает отсортированный итератор элементов в этой коллекции, ранжированных в порядке возрастания результатов выполнения каждого значения через обратный вызов. $callback также может быть строкой, представляющей имя столбца или свойства.
- stopWhen() public
Создает новую коллекцию, которая при итерации прекращает выводить результаты, если предоставленное условие оценивается как false.
- sumOf() public
Возвращает общую сумму всех значений, извлеченных с помощью $matcher, или этой коллекции.
- take() public
Возвращает новую коллекцию с максимальным $size элементами в внутреннем порядке, в котором эта коллекция была создана. Если передается второй параметр, он определяет, с какой позиции начинать извлечение элементов.
- through() public
Пропускает эту коллекцию через вызываемый объект в качестве первого аргумента. Это полезно для декорирования всей коллекции другим объектом.
- toArray() publicВозвращает массивное представление результатов
- toList() public
Возвращает массивное представление результатов с численными индексами. Это эквивалентно вызову
toArray(false) - transpose() publicТранспонирует строки и столбцы в столбцы и строки
- unfold() public
Создаёт новую коллекцию, где элементы являются конкатенацией списков элементов, сгенерированных функцией преобразования, применённой к каждому элементу в исходной коллекции.
- unwrap() public
Возвращает ближайший вложенный итератор, который можно безопасно проходить, не теряя возможных преобразований. Это используется в основном для удаления пустых обёртков IteratorIterator, которые могут лишь замедлить процесс итерации.
- zip() public
Объединяет элементы этой коллекции с каждым из элементов переданных итераторов, используя их позиционные индексы в качестве ссылки.
- zipWith() public
Объединяет элементы этой коллекции с каждым из элементов переданных итераторов, используя их позиционные индексы в качестве ссылки.
Подробное описание методов
append()source public
append( array|Traversable $items )
Возвращает новую коллекцию в результате конкатенации списка элементов в этой коллекции со списком переданных элементов.
Параметры
- array|Traversable
$items - Список элементов.
Возвращает
Cake\Collection\CollectionInterfaceavg()source public
avg( string|callable|null $matcher = null )
Возвращает среднее значение всех значений, извлеченных с помощью $matcher или этой коллекции.
Пример:
$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 Параметры
- string|callable|null
$matcheroptional null Имя свойства для суммирования или функция, возвращающая значение свойства для суммирования. Если значение не передано, будет использована функция тождества.
Возвращает
float|integer|nullbuffered()source public
buffered( )
Возвращает новую коллекцию, где операции, выполняемые этой коллекцией, выполняются только один раз. Независимо от того, сколько раз будет обращаться к новой коллекции, эти операции будут выполнены только один раз.
Это также можно использовать для того, чтобы сделать любой неперематываемый итератор перематываемым.
Возвращает
Cake\Collection\CollectionInterfacechunk()source public
chunk( integer $chunkSize )
Разбивает коллекцию на меньшие массивы заданного размера.
Пример:
$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]]
Параметры
- integer
$chunkSize - Максимальный размер каждого фрагмента
Возвращает
Cake\Collection\CollectionInterfacechunkWithKeys()source public
chunkWithKeys( integer $chunkSize , boolean $preserveKeys = true )
Разбивает коллекцию на меньшие массивы заданного размера.
Пример:
$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]]
Параметры
- integer
$chunkSize - Максимальный размер каждого фрагмента
- boolean
$preserveKeysoptional true - Если ключи массива должны быть сохранены
Возвращает
Cake\Collection\CollectionInterfacecombine()source public
combine( callable|string $keyPath , callable|string $valuePath , callable|string|null $groupPath = null )
Возвращает новую коллекцию, где значения извлекаются по пути к значению, а затем индексируются по пути к ключу. Дополнительно этот метод может создавать родительские группы на основе свойства группировки.
Примеры:
$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
$groupPathoptional null путь к имени столбца для использования в качестве ключа группировки родительских элементов или функция, возвращающая ключ из предоставленного элемента
Возвращает
Cake\Collection\CollectionInterfacecompile()source public
compile( boolean $preserveKeys = true )
Один раз проходит по всем элементам в этой коллекции и выполняет все стековые операции над ними, в итоге возвращает новую коллекцию с результатом. Это полезно для преобразования неперематываемых внутренних итераторов в коллекцию, которая может быть перемотана и использована несколько раз.
Распространённый случай использования — повторное использование той же переменной для вычисления разных данных. В таких случаях может быть полезно и более производительно сначала скомпилировать коллекцию, а затем применить к ней больше операций.
Пример:
$collection->map($mapper)->sortBy('age')->extract('name');
$compiled = $collection->compile();
$isJohnHere = $compiled->some($johnMatcher);
$allButJohn = $compiled->filter($johnMatcher); В приведённом выше примере, если бы коллекция не была скомпилирована предварительно, итерации для map, sortBy и extract были бы выполнены дважды: один раз для получения $isJohnHere и один раз для $allButJohn
Можно рассматривать этот метод как способ создания контрольных точек для сложных вычислений в коллекции.
Параметры
- boolean
$preserveKeysoptional true использовать ли ключи, возвращаемые этой коллекцией, в качестве ключей массива. Имейте в виду, что для итераторов допустимо возвращать один и тот же ключ для разных элементов. Установка этого значения в false может помочь получить все элементы, если ключи не важны в результате.
Возвращает
Cake\Collection\CollectionInterfacecontains()source public
contains( mixed $value )
Возвращает true, если $value присутствует в этой коллекции. Сравнения выполняются по значению и типу.
Параметры
- mixed
$value - Значение, которое нужно проверить
Возвращает
booleantrue, если $value присутствует в этой коллекции
count()source public
count( )
Возвращает количество элементов в коллекции.
ПРЕДУПРЕЖДЕНИЯ:
Потребляет все элементы для коллекций NoRewindIterator:
В некоторых типах коллекций вызов этого метода может сделать их непригодными для дальнейшего использования. То есть, вы можете больше не получить элементы или итерироваться по ним.
В частности, любая коллекция, обертывающая генератор (функцию с оператором yield) или небуферизованный курсор базы данных, не будет принимать другие вызовы функций после вызова count() на ней.
Создайте новую коллекцию с помощью метода buffered() для решения этой проблемы.
Может сообщать о большем количестве элементов, чем уникальных ключей:
Любая коллекция, созданная путём присвоения коллекций друг к другу или имеющая внутренние итераторы, возвращающие дубликаты ключей, будет сообщать о большем количестве элементов с помощью этой функции, чем фактическое количество элементов после преобразования коллекций в массив с ключами. Это происходит потому, что дубликаты ключей будут объединены в один в конечном массиве, в то время как метод подсчёта интересуется только количеством элементов после преобразования в обычный список.
Если вам нужно количество элементов с учётом ключей (количество уникальных ключей), вы можете вызвать countKeys()
Изменяет текущее положение итератора:
Вызов этого метода во время итерации по этой коллекции, например, в цикле foreach, приведёт к неопределённому поведению. Избегайте этого.
Возвращает
integercountBy()source public
countBy( callable|string $callback )
Сортирует список по группам и возвращает количество элементов в каждой группе. Аналогично 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
$callback обратный вызов или имя столбца для индексации или функция, возвращающая ключ индекса из предоставленного элемента
Возвращает
Cake\Collection\CollectionInterfacecountKeys()source public
countKeys( )
Возвращает количество уникальных ключей в этом итераторе. Это количество элементов, которые будет содержать коллекция после вызова toArray()
Этот метод имеет ряд ограничений. Подробнее см. CollectionInterface::count()
Возвращает
целое числоСм. также
\Cake\Collection\CollectionInterface::count()each()source public
each( callable $c )
Выполняет переданный обратный вызов для каждого элемента в этой коллекции и передаёт значение и ключ для каждого шага. Возвращает ту же коллекцию для цепочки.
Пример:
$collection = (new Collection($items))->each(function ($value, $key) {
echo "Element $key: $value";
}); Параметры
- callable
$c функция обратного вызова, которая получит каждый из элементов в этой коллекции
Возвращает
Cake\Collection\CollectionInterfaceevery()source public
every( callable $c )
Возвращает true, если все значения в этой коллекции проходят проверку, заданную в обратном вызове.
Каждый раз, когда вызывается обратный вызов, он получает значение элемента в текущей итерации и ключ элемента в качестве аргументов в указанном порядке.
Пример:
$overTwentyOne = (new Collection([24, 45, 60, 15]))->every(function ($value, $key) {
return $value > 21;
}); Пустые коллекции всегда возвращают true, так как это пустая истина.
Параметры
- callable
$c - функция обратного вызова
Возвращает
booleantrue, если для всех элементов в этой коллекции предоставленный обратный вызов возвращает true, в противном случае — false.
extract()source public
extract( string $matcher )
Возвращает новую коллекцию, содержащую значение столбца или свойства, найденное в каждом элементе, как запрошено в параметре $matcher.
Matcher может быть строкой с именем свойства или путём свойств, разделённым точками, для получения последнего свойства в пути.
Если столбец или свойство не могут быть найдены для определённого элемента в коллекции, в этой позиции будет 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
$matcher строка, разделённая точками, обозначающая путь для навигации внутри иерархии каждого значения, чтобы извлечь столбец.
Возвращает
Cake\Collection\CollectionInterfacefilter()source public
filter( callable $c = null )
Просматривает каждое значение в коллекции и возвращает другую коллекцию со всеми значениями, которые проходят проверку. В результирующей коллекции будут присутствовать только те значения, для которых обратный вызов возвращает true.
Каждый раз, когда вызывается обратный вызов, он получает значение элемента в текущей итерации, ключ элемента и эту коллекцию в качестве аргументов в указанном порядке.
Пример:
Фильтрация нечётных чисел в массиве, в итоге в результирующей коллекции останется только значение 2:
$collection = (new Collection([1, 2, 3]))->filter(function ($value, $key) {
return $value % 2 === 0;
}); Параметры
- callable
$cнеобязательно null метод, который получит каждый из элементов и вернёт true, если они должны присутствовать в результирующей коллекции. Если оставлено null, будет использован обратный вызов, который фильтрует ложные значения.
Возвращает
Cake\Collection\CollectionInterfacefirst()source public
first( )
Возвращает первый результат в этой коллекции
Возвращает
смешанный типБудет возвращено первое значение в коллекции.
firstMatch()source public
firstMatch( array $conditions )
Возвращает первый результат, соответствующий всем парам ключ-значение, указанным в условиях.
Параметры
- массив
$conditions список пар ключ-значение условий, где ключ — путь к свойству, как и принимается
Collection::extract, а значение — условие для соответствия каждого элемента
Возвращает
смешанный типСм. также
\Cake\Collection\CollectionInterface::match()groupBy()source public
groupBy( callable|string $callback )
Разделяет коллекцию на наборы, сгруппированные по результату применения каждого значения через обратный вызов. Если $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
$callback обратный вызов или имя столбца для группировки или функция, возвращающая ключ группировки из предоставленного элемента
Возвращает
Cake\Collection\CollectionInterfaceindexBy()source public
indexBy( callable|string $callback )
Принимая список и функцию обратного вызова, которая возвращает ключ для каждого элемента в списке (или имя свойства), возвращает объект с индексом каждого элемента. То же, что и 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
$callback обратный вызов или имя столбца для индексации или функция, возвращающая ключ индекса из предоставленного элемента
Возвращает
Cake\Collection\CollectionInterfaceinsert()source public
insert( string $path , mixed $values )
Возвращает новую коллекцию, содержащую каждый из элементов, найденных в $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 строка, разделённая точками, обозначающая путь для навигации внутри иерархии каждого значения, чтобы вставить значение
- смешанный тип
$values значения, которые будут вставлены по указанному пути; значения сопоставляются с элементами в этой коллекции по их позиционному индексу.
Возвращает
Cake\Collection\CollectionInterfaceisEmpty()source public
isEmpty( )
Возвращает, есть ли элементы в этой коллекции
Пример:
$items [1, 2, 3]; (new Collection($items))->isEmpty(); // false
(new Collection([]))->isEmpty(); // true
Возвращает
booleanjsonSerialize()source public
jsonSerialize( )
Преобразовать набор результатов в JSON.
Часть интерфейса JsonSerializable.
Возвращает
массивДанные для преобразования в JSON
Реализация
JsonSerializable::jsonSerialize() last()source public
last( )
Возвращает последний результат в этом наборе.
Возвращает
mixedБудет возвращено последнее значение в наборе.
listNested()source public
listNested( string|integer $dir = 'desc' , string|callable $nestingKey = 'children' )
Возвращает новый набор, содержащий каждый элемент из этого набора после сглаживания древовидной структуры. Структура дерева определяется вложением элементов под ключом с известным именем. Это имя можно указать с помощью параметра '$nestingKey'.
По умолчанию, все элементы в дереве, следующие по алгоритму обхода в глубину (Depth First Search), будут возвращены, то есть элементы от родительского узла к листьям для каждой ветви.
Возвратить все элементы снизу вверх, используя алгоритм обхода в ширину (Breadth First Search), можно, передав параметр '$dir' со значением 'asc'. То есть, он вернёт все элементы для каждого уровня дерева сначала и снизу вверх.
Наконец, можно указать, чтобы получить только набор с узлами-листьями в структуре дерева. Для этого передайте 'leaves' в качестве первого аргумента.
Возможные значения первого аргумента являются псевдонимами для следующих констант, и их можно передавать вместо псевдонима:
- desc: TreeIterator::SELF_FIRST
- asc: TreeIterator::CHILD_FIRST
- leaves: TreeIterator::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|integer
$dirнеобязательно 'desc' - Направление возврата элементов
- string|callable
$nestingKeyнеобязательно 'children' Имя ключа, под которым вложены дочерние элементы, или вызываемая функция, которая вернёт список дочерних элементов
Возвращает
Cake\Collection\CollectionInterfacemap()source public
map( callable $c )
Возвращает другой набор после модификации каждого значения в этом наборе с помощью предоставленной вызываемой функции.
Каждый раз при выполнении обратного вызова он будет получать значение элемента в текущей итерации, ключ элемента и этот набор в качестве аргументов в указанном порядке.
Пример:
Получение набора булевых значений, где true указывает, является ли человек женщиной:
$collection = (new Collection($people))->map(function ($person, $key) {
return $person->gender === 'female';
}); Параметры
- callable
$c метод, который получит каждый из элементов и вернёт новое значение для итерируемого ключа
Возвращает
Cake\Collection\CollectionInterfacematch()source public
match( array $conditions )
Просматривает каждое значение в списке, возвращая набор всех значений, которые содержат все пары «ключ-значение», перечисленные в $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`, а значение — условие, с которым будет сравниваться каждый элемент
Возвращает
Cake\Collection\CollectionInterfacemax()source public
max( callable|string $callback , integer $type = \SORT_NUMERIC )
Возвращает верхний элемент в этом наборе после сортировки по свойству. Обратитесь к методу sortBy для получения информации о параметрах обратного вызова и $type.
Примеры:
// 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
$callback - обратный вызов или имя столбца для сортировки
- integer
$typeнеобязательно \SORT_NUMERIC тип сравнения, SORT_STRING, SORT_NUMERIC или SORT_NATURAL
Возвращает
mixedЗначение верхнего элемента в наборе
См. также
\Cake\Collection\CollectionIterface::sortBy()median()source public
median( string|callable|null $matcher = null )
Возвращает медиану всех значений, извлеченных с помощью $matcher, или всего набора.
Пример:
$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 Параметры
- string|callable|null
$matcherнеобязательно null Имя свойства для суммирования или функция, которая вернёт значение свойства для суммирования. Если значение не передано, будет использована функция идентичности.
Возвращает
float|integer|nullmin()source public
min( callable|string $callback , integer $type = \SORT_NUMERIC )
Возвращает нижний элемент в этом наборе после сортировки по свойству. Обратитесь к методу sortBy для получения информации о параметрах обратного вызова и $type.
Примеры:
// 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
$callback - обратный вызов или имя столбца для сортировки
- integer
$typeнеобязательно \SORT_NUMERIC тип сравнения, SORT_STRING, SORT_NUMERIC или SORT_NATURAL
Возвращает
mixedЗначение нижнего элемента в наборе
См. также
\Cake\Collection\CollectionInterface::sortBy()nest()source public
nest( callable|string $idPath , callable|string $parentPath , string $nestingKey = 'children' )
Возвращает новый набор, где значения вложены в структуру дерева на основе пути к свойству id и пути к свойству родительского id.
Параметры
- callable|string
$idPath путь к имени столбца, используемый для определения, является ли элемент родителем другого
- callable|string
$parentPath путь к имени столбца, используемый для определения, является ли элемент дочерним элементом другого
- string
$nestingKeyнеобязательно 'children' - Имя ключа, под которым вложены дочерние элементы
Возвращает
Cake\Collection\CollectionInterfacereduce()source public
reduce( callable $c , mixed $zero = null )
Сворачивает значения в этом наборе в одно значение, как результат применения функции обратного вызова ко всем элементам. $zero — начальное состояние сворачивания, и каждый последующий шаг должен быть возвращён функцией обратного вызова. Если $zero опущен, первое значение набора будет использоваться вместо него, и сворачивание начнется со второго элемента.
Параметры
- callable
$c - Функция обратного вызова, которая будет вызываться
- mixed
$zeroнеобязательно null - Состояние сворачивания
Возвращает
mixedreject()source public
reject( callable $c )
Просматривает каждое значение в наборе и возвращает другой набор со всеми значениями, которые не проходят проверку истинности. Это противоположно filter.
Каждый раз при выполнении обратного вызова он будет получать значение элемента в текущей итерации, ключ элемента и этот набор в качестве аргументов в указанном порядке.
Пример:
Фильтрация чётных чисел в массиве, в итоге в результирующем наборе будут только значения 1 и 3:
$collection = (new Collection([1, 2, 3]))->reject(function ($value, $key) {
return $value % 2 === 0;
}); Параметры
- callable
$c метод, который получит каждый из элементов и вернёт true, если элемент должен быть исключён из результирующего набора.
Возвращает
Cake\Collection\CollectionInterfacesample()source public
sample( integer $size = 10 )
Возвращает новый набор с максимальным количеством случайных элементов из этого набора.
Параметры
- integer
$sizeнеобязательно 10 максимальное количество элементов для случайного выбора из этого набора
Возвращает
Cake\Collection\CollectionInterfaceshuffle()source public
shuffle( )
Возвращает новый набор с элементами в случайном порядке, эта функция не сохраняет исходные ключи в наборе.
Возвращает
Cake\Collection\CollectionInterfaceskip()source public
skip( integer $howMany )
Возвращает новую коллекцию, которая пропустит указанное количество элементов в начале итерации.
Параметры
- целое число
$howMany - Количество элементов для пропуска.
Возвращаемое значение
Cake\Collection\CollectionInterfacesome()source public
some( callable $c )
Возвращает true, если хотя бы одно из значений в этой коллекции проходит проверку, заданную в обратном вызове.
Каждый раз при выполнении обратного вызова он получит значение элемента в текущей итерации и ключ элемента в качестве аргументов в указанном порядке.
Пример:
$hasYoungPeople = (new Collection([24, 45, 15]))->every(function ($value, $key) {
return $value < 21;
}); Параметры
- обратный вызов
$c - функция обратного вызова
Возвращаемое значение
booleantrue, если предоставленный обратный вызов возвращает true для любого элемента в этой коллекции, иначе false
sortBy()source public
sortBy( callable|string $callback , integer $dir = SORT_DESC , integer $type = \SORT_NUMERIC )
Возвращает отсортированный итератор элементов в этой коллекции, упорядоченных по возрастанию на основе результатов выполнения каждого значения через обратный вызов. $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;
} Параметры
- обратный вызов|строка
$callback - функция обратного вызова или имя столбца для сортировки
- целое число
$dirнеобязательно SORT_DESC - либо SORT_DESC, либо SORT_ASC
- целое число
$typeнеобязательно \SORT_NUMERIC тип сравнения, который необходимо выполнить, либо SORT_STRING, SORT_NUMERIC или SORT_NATURAL
Возвращаемое значение
Cake\Collection\CollectionInterfacestopWhen()source public
stopWhen( callable $condition )
Создает новую коллекцию, которая при итерации прекращает выдавать результаты, если предоставленное условие оценивается как ложь.
Это полезно для работы с бесконечными итераторами или любыми генераторами, которые могут начать возвращать некорректные элементы в определенный момент. Например, при чтении строк из потока файла вы можете остановить итерацию после достижения определенного значения.
Пример:
Получить массив строк в файле 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]);
Параметры
- обратный вызов
$condition метод, который получит каждый из элементов и вернет false, когда итерация должна быть остановлена. Если массив, он будет интерпретирован как список условий, где ключ — путь к свойству, принятый
Collection::extract, а значение — условие, по которому будет сопоставляться каждый элемент.
Возвращаемое значение
Cake\Collection\CollectionInterfacesumOf()source public
sumOf( string|callable|null $matcher = null )
Возвращает общую сумму всех значений, извлеченных с помощью $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 Параметры
- строка|обратный вызов|null
$matcherнеобязательно null Имя свойства для суммирования или функция. Если значение не передано, будет использована функция идентификации, которая вернет значение свойства для суммирования.
Возвращаемое значение
float|целое числоtake()source public
take( integer $size = 1 , integer $from = 0 )
Возвращает новую коллекцию с максимальным количеством $size элементов в порядке, в котором эта коллекция была создана. Если передать второй параметр, он определит, с какой позиции начинать извлечение элементов.
Параметры
- целое число
$sizeнеобязательно 1 максимальное количество элементов для извлечения из этой коллекции
- целое число
$fromнеобязательно 0 - Позиционный смещение, с которого начинать извлечение элементов
Возвращаемое значение
Cake\Collection\CollectionInterfacethrough()source public
through( callable $handler )
Передает эту коллекцию через функцию обратного вызова в качестве первого аргумента. Это полезно для оформления всей коллекции другим объектом.
Пример:
$items = [1, 2, 3];
$decorated = (new Collection($items))->through(function ($collection) {
return new MyCustomCollection($collection);
}); Параметры
- обратный вызов
$handler Функция обратного вызова, которая получит эту коллекцию в качестве первого аргумента.
Возвращаемое значение
Cake\Collection\CollectionInterfacetoArray()source public
toArray( boolean $preserveKeys = true )
Возвращает массив результатов.
Параметры
- boolean
$preserveKeysнеобязательно true использовать ли ключи, возвращаемые этой коллекцией, в качестве ключей массива. Имейте в виду, что для итераторов допустимо возвращать один и тот же ключ для разных элементов. Установка этого значения в false может помочь получить все элементы, если ключи в результате не важны.
Возвращаемое значение
массивtoList()source public
toList( )
Возвращает массив результатов с числовыми индексами. Это эквивалентно вызову toArray(false)
Возвращаемое значение
массивtranspose()source public
transpose( )
Транспонировать строки и столбцы в столбцы и строки
Пример:
$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'],
// ] Возвращаемое значение
Cake\Collection\CollectionInterfaceunfold()source public
unfold( callable $transformer = null )
Создает новую коллекцию, где элементы являются конкатенацией списков элементов, сгенерированных функцией трансформатора, примененной к каждому элементу исходной коллекции.
Функция трансформатора получит значение и ключ для каждого элемента в коллекции в указанном порядке, и она должна вернуть массив или объект 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();
}); Параметры
- обратный вызов
$transformerнеобязательно null Функция обратного вызова, которая получит каждый из элементов в коллекции и должна вернуть массив или объект Traversable.
Возвращаемое значение
Cake\Collection\CollectionInterfaceunwrap()source public
unwrap( )
Возвращает ближайшую вложенную итерацию, которая может быть безопасно пройдена без потери возможных преобразований. Это используется в основном для удаления пустых обёрток IteratorIterator, которые могут только замедлять процесс итерации.
Возвращаемое значение
Traversablezip()source public
zip( array|Traversable $items )
Объединяет элементы этой коллекции с каждым элементом переданных итерируемых объектов, используя их позиционный индекс в качестве ссылки.
Пример:
$collection = new Collection([1, 2]); $collection->zip([3, 4], [5, 6])->toList(); // returns [[1, 3, 5], [2, 4, 6]]
Параметры
- массив|итерируемый объект
$items - $items Коллекции для объединения.
Возвращаемое значение
Cake\Collection\CollectionInterfacezipWith()source public
zipWith( array|Traversable $items , callable $callable )
Объединяет элементы этого набора с каждым из элементов переданных итерируемых объектов, используя их позиционный индекс в качестве ссылки.
Результирующий элемент будет значением, возвращаемым функцией $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)] Параметры
- массив|Перечислимый
$items - $items Наборы для объединения.
- вызываемая функция
$callable - Функция, используемая для объединения элементов.
Возвращает
Cake\Collection\CollectionInterface
© 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/3.6/class-Cake.Collection.CollectionInterface.html