Интерфейс CollectionInterface
Описывает методы, которые должен реализовать объект Collection. Collection — это неизменяемый список элементов, предоставляющий множество методов для обхода и извлечения элементов, с целью создания других коллекций.
- Cake\Collection\CollectionInterface реализует 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Возвращает значение true, если в этой коллекции есть элементы
- 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 )
Возвращает новую коллекцию в результате конкатенации списка элементов этой коллекции со списком переданных элементов
Параметры
- массив|Перечисляемый
$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 Параметры
- строка|вызываемый объект|null
$matcherнеобязательно null Имя свойства для суммирования или функция, которая вернёт значение свойства для суммирования. Если значение не передано, будет использована функция тождества.
Возвращает
число с плавающей точкой|целое число|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]]
Параметры
- целое число
$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]]
Параметры
- целое число
$chunkSize - Максимальный размер каждого фрагмента
- логическое
$preserveKeysнеобязательно 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']
]; Параметры
- вызываемый объект|строка
$keyPath путь к имени столбца для индексации или функция, возвращающая индексный ключ из предоставленного элемента
- вызываемый объект|строка
$valuePath путь к имени столбца для использования в качестве значения массива или функция, возвращающая значение из предоставленного элемента
- вызываемый объект|строка|null
$groupPathнеобязательно 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
Можно рассматривать этот метод как способ создания точек сохранения для сложных вычислений в коллекции.
Параметры
- логическое
$preserveKeysнеобязательно true использовать ли ключи, возвращаемые этой коллекцией, в качестве ключей массива. Имейте в виду, что для итераторов допустимо возвращать один и тот же ключ для разных элементов, установка этого значения в false может помочь получить все элементы, если ключи не важны в результате.
Возвращает
Cake\Collection\CollectionInterfacecontains()source public
contains( mixed $value )
Возвращает true, если $value присутствует в этой коллекции. Сравнения выполняются по значению и типу.
Параметры
- смешанный
$value - Значение для проверки
Возвращает
логическоеtrue, если $value присутствует в этой коллекции
count()source public
count( )
Возвращает количество элементов в коллекции.
ПРЕДУПРЕЖДЕНИЯ:
Потребляет все элементы для коллекций NoRewindIterator:
Для определённых типов коллекций вызов этого метода может сделать их неиспользуемыми после этого. То есть, вы можете не получить из них элементы или итерироваться по ним.
В частности, любая коллекция, обертывающая Генератор (функцию с оператором yield) или небуферизованный курсор базы данных, не примет никаких других вызовов функций после вызова count().
Создайте новую коллекцию с помощью метода buffered(), чтобы решить эту проблему.
Может сообщать о большем количестве элементов, чем уникальных ключей:
Любая коллекция, составленная путём присоединения коллекций друг к другу или путём наличия внутренних итераторов, возвращающих дублирующие ключи, будет сообщать о большем количестве элементов с помощью этой функции, чем фактическое количество элементов при преобразовании коллекций в массив с ключами. Это происходит потому, что дублирующие ключи будут свёрнуты в один в конечном массиве, в то время как метод count рассматривает только количество элементов после преобразования в обычный список.
Если вам нужно количество элементов с учётом ключей (количество уникальных ключей), вы можете вызвать countKeys()
Изменяет текущую позицию итератора:
Вызов этого метода одновременно с итерированием по этой коллекции, например, в цикле foreach, приведёт к неопределённому поведению. Избегайте этого.
Возвращает
целое числоcountBy()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()
Возвращает
integerСм. также
\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( )
Возвращает первый результат в этой коллекции
Возвращает
mixedБудет возвращено первое значение в коллекции.
firstMatch()source public
firstMatch( array $conditions )
Возвращает первый результат, соответствующий всем парам ключ-значение, перечисленным в условиях.
Параметры
- array
$conditions список пар ключ-значение, где ключ — это путь к свойству, принятому
Collection::extract, а значение — условие, с которым будет сравниваться каждый элемент
Возвращает
mixedСм. также
\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 строка, разделённая точками, обозначающая путь, который нужно пройти внутри иерархии каждого значения, чтобы вставить значение
- mixed
$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.
Возвращает
arrayДанные для преобразования в JSON
Реализация
JsonSerializable::jsonSerialize() last()source public
last( )
Возвращает последний результат в этом наборе.
Возвращает
mixedБудет возвращено последнее значение в наборе.
lazy()source public
lazy( )
Возвращает новый набор, где любые операции, связанные за ним, гарантированно будут выполняться лениво. То есть элементы будут возвращаться по одному.
Ленивый набор можно итерировать только один раз. Вторая попытка приводит к ошибке.
Возвращает
Cake\Collection\CollectionInterfacelistNested()source public
listNested( string|integer $dir = 'desc' , string|callable $nestingKey = 'children' )
Возвращает новый набор с каждым элементом этого набора после уплощения структуры дерева. Структура дерева определяется вложением элементов под ключом с известным именем. Такое имя можно указать, используя параметр '$nestingKey'.
По умолчанию возвращаются все элементы в дереве, следуя поиску в глубину. То есть элементы от родительского узла до листьев каждого ответвления.
Можно вернуть все элементы сверху вниз, используя поиск в ширину, передав параметр '$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 - функция обратного вызова
Возвращает
булево значениеtrue, если предоставленный обратный вызов возвращает 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 )
Создает новую коллекцию, которая при итерации прекратит вывод результатов, если предоставленное условие оценивается как true.
Это удобно для работы с бесконечными итераторами или любым генератором, который может начать возвращать недействительные элементы в определенный момент. Например, при чтении строк из потока файла вы можете остановить итерацию после достижения определенного значения.
Пример:
Получение массива строк в файле 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 метод, который будет получать каждый из элементов и возвращает 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 Параметры
- строка/обратный вызов/null
$matcherнеобязательно null Имя свойства для суммирования или функция. Если значение не указано, будет использована функция тождества, которая вернёт значение свойства для суммирования.
Возвращает
число с плавающей точкой/целое числоtake()source public
take( integer $size = 1 , integer $from = 0 )
Возвращает новую коллекцию с максимальным количеством $size элементов в внутреннем порядке, в котором эта коллекция была создана. Если указан второй параметр, он определит позицию, с которой начинать взятие элементов.
Параметры
- целое число
$sizeнеобязательно 1 максимальное количество элементов, которые необходимо взять из этой коллекции
- целое число
$fromнеобязательно 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];
Параметры
- целое число
$howMany - Количество элементов в конце коллекции
Возвращает
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 )
Возвращает представление результатов в виде массива
Параметры
- булево значение
$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.7/class-Cake.Collection.CollectionInterface.html