Интерфейс CollectionInterface
Описывает методы, которые должен реализовывать объект Collection. 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Возвращает последний результат в этой коллекции
- lazy() public
Возвращает новую коллекцию, где любые операции, присоединенные к ней, гарантированно будут выполняться лениво. То есть элементы будут возвращаться по одному.
- listNested() public
Возвращает новую коллекцию с каждым элементом этой коллекции после сглаживания структуры дерева. Структура дерева определяется вложением элементов под ключом с известным именем. Это имя можно указать с помощью параметра '$nestingKey'.
- map() public
Возвращает другую коллекцию после модификации каждого значения в этой с помощью предоставленного вызываемого элемента.
- match() public
Просматривает каждое значение в списке, возвращая коллекцию всех значений, содержащих все пары ключ-значение, перечисленные в $conditions.
- max() public
Возвращает верхний элемент в этой коллекции после сортировки по свойству. См. метод sortBy для получения информации о параметрах обратного вызова и $type.
- median() public
Возвращает медиану всех значений, извлеченных с помощью $matcher, или этой коллекции.
- min() public
Возвращает нижний элемент в этой коллекции после сортировки по свойству. См. метод sortBy для получения информации о параметрах обратного вызова и $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
Создает новую коллекцию, которая при итерации перестанет возвращать результаты, если предоставленное условие примет значение 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()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]]
]; Параметры
- строка
$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( )
Возвращает последний результат в этой коллекции
Возвращает
смешанноеБудет возвращено последнее значение в коллекции.
lazy()source public
lazy( )
Возвращает новую коллекцию, в которой любые операции, присоединённые к ней, гарантированно будут выполняться лениво. То есть, элементы будут возвращаться по одному.
К ленивой коллекции можно обращаться только один раз. Повторная попытка приводит к ошибке.
Возвращаемое значение
Cake\Collection\CollectionInterfacelistNested()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] Параметры
- строка|целое число
$dirнеобязательно 'desc' - Направление возврата элементов
- строка|обратный вызов
$nestingKeyнеобязательно 'children' Имя ключа, под которым вложены дочерние элементы, или функция обратного вызова, которая вернёт список дочерних элементов
Возвращаемое значение
Cake\Collection\CollectionInterfacemap()source public
map( callable $c )
Возвращает другую коллекцию после модификации каждого значения в этой коллекции с использованием предоставленного обратного вызова.
Каждый раз при выполнении обратного вызова он получает значение элемента в текущей итерации, ключ элемента и эту коллекцию в качестве аргументов в указанном порядке.
Пример:
Получение коллекции булевых значений, где true указывает, является ли человек женщиной:
$collection = (new Collection($people))->map(function ($person, $key) {
return $person->gender === 'female';
}); Параметры
- обратный вызов
$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']] ]
Параметры
- массив
$conditions список пар ключ-значение условий, где ключ представляет собой путь к свойству, принятый `Collection::extract`, а значение — условие, с которым будет сравниваться каждый элемент
Возвращаемое значение
Cake\Collection\CollectionInterfacemax()source public
max( callable|string $callback , integer $type = \SORT_NUMERIC )
Возвращает максимальный элемент в этой коллекции после сортировки по свойству. См. метод sortBy для получения информации о параметрах callback и $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; Параметры
- обратный вызов|строка
$callback - обратный вызов или имя столбца для сортировки
- целое число
$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 Параметры
- строка|обратный вызов|null
$matcherнеобязательно null Имя свойства для суммирования или функция. Если значение не передано, будет использована функция тождества. Функция вернёт значение свойства для суммирования.
Возвращаемое значение
float|integer|nullmin()source public
min( callable|string $callback , integer $type = \SORT_NUMERIC )
Возвращает минимальный элемент в этой коллекции после сортировки по свойству. См. метод sortBy для получения информации о параметрах callback и $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; Параметры
- обратный вызов|строка
$callback - обратный вызов или имя столбца для сортировки
- целое число
$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.
Параметры
- обратный вызов|строка
$idPath путь к имени столбца для определения, является ли элемент родителем другого
- обратный вызов|строка
$parentPath путь к имени столбца для определения, является ли элемент дочерним по отношению к другому
- строка
$nestingKeyнеобязательно 'children' - Имя ключа, под которым вложены дочерние элементы
Возвращаемое значение
Cake\Collection\CollectionInterfacereduce()source public
reduce( callable $c , mixed $zero = null )
Сворачивает значения в этой коллекции в одно значение, как результат применения функции обратного вызова ко всем элементам. $zero — начальное состояние свёртки, и каждый последующий шаг должен возвращаться функцией обратного вызова. Если $zero опущено, будет использовано первое значение коллекции, а свёртка начнется со второго элемента.
Параметры
- обратный вызов
$c - Функция обратного вызова для вызова
- смешанный тип
$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;
}); Параметры
- обратный вызов
$c метод, который получит каждый из элементов и вернёт true, если элемент должен быть исключен из результирующей коллекции
Возвращаемое значение
Cake\Collection\CollectionInterfacesample()source public
sample( integer $size = 10 )
Возвращает новую коллекцию с максимальным количеством $size случайных элементов из этой коллекции
Параметры
- целое число
$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;
}); Параметры
- callable
$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;
} Параметры
- callable|string
$callback - обратный вызов или имя столбца для использования при сортировке
- integer
$diroptional SORT_DESC - либо SORT_DESC, либо SORT_ASC
- integer
$typeoptional \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]);
Параметры
- callable
$condition метод, который получит каждый из элементов и вернёт true, когда итерация должна быть остановлена. Если массив, он будет интерпретирован как список значений-условий, где ключ — путь к свойству, принятый
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 Параметры
- string|callable|null
$matcheroptional null Имя свойства для суммирования или функция, если не указано, будет использоваться функция тождественности. которая вернёт значение свойства для суммирования.
Возвращает
float|integertake()source public
take( integer $size = 1 , integer $from = 0 )
Возвращает новый набор данных с максимальным числом элементов $size в порядке, в котором этот набор данных был создан. Если в качестве второго параметра передано значение, оно будет определять позицию, с которой начинать извлечение элементов.
Параметры
- integer
$sizeoptional 1 максимальное число элементов для извлечения из этого набора данных
- integer
$fromoptional 0 - позиционное смещение, с которого извлекать элементы
Возвращает
Cake\Collection\CollectionInterfacetakeLast()source public
takeLast( integer $howMany )
Возвращает последние 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];
Параметры
- integer
$howMany - число элементов в конце набора данных
Возвращает
Cake\Collection\CollectionInterfacethrough()source public
through( callable $handler )
Пропускает этот набор данных через функцию обратного вызова в качестве первого аргумента. Это полезно для украшения всего набора данных другим объектом.
Пример:
$items = [1, 2, 3];
$decorated = (new Collection($items))->through(function ($collection) {
return new MyCustomCollection($collection);
}); Параметры
- callable
$handler функция обратного вызова, которая получит этот набор данных в качестве первого аргумента.
Возвращает
Cake\Collection\CollectionInterfacetoArray()source public
toArray( boolean $preserveKeys = true )
Возвращает массив результатов
Параметры
- boolean
$preserveKeysoptional true использовать ли ключи, возвращаемые этим набором данных, как ключи массива. Имейте в виду, что для итераторов допустимо возвращать один и тот же ключ для разных элементов. Установка этого значения в false может помочь получить все элементы, если ключи в результате не важны.
Возвращает
arraytoList()source public
toList( )
Возвращает массив результатов с числовыми индексами. Это эквивалентно вызову toArray(false)
Возвращает
arraytranspose()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();
}); Параметры
- callable
$transformeroptional 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]]
Параметры
- array|Traversable
$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)] Параметры
- array|Traversable
$items - $items Наборы данных для объединения.
- callable
$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.8/class-Cake.Collection.CollectionInterface.html