Интерфейс CollectionInterface
Описывает методы, которые должен реализовать объект 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 присутствует в этой коллекции. Сравнения выполняются по значению и типу.
- countBy() public
Сортирует список в группы и возвращает количество элементов в каждой группе. Аналогично groupBy, но вместо возвращения списка значений возвращает количество значений в этой группе.
- 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
Создает новую коллекцию, которая при итерации перестанет генерировать результаты, если предоставленное условие оценивается как ложное.
- 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]]
Устарело
4.0.0 Устарело в пользу chunksПараметры
- 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 присутствует в этой коллекции
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\CollectionInterfaceeach()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] Параметры
- строка
$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;
}); Параметры
- вызываемый
$cнеобязательно null метод, который получит каждый из элементов и вернёт true, если они должны быть в результирующей коллекции. Если оставлено null, будет использован обратный вызов, который фильтрует ложные значения.
Возвращает
Cake\Collection\CollectionInterfacefirst()source public
first( )
Возвращает первый результат в этой коллекции
Возвращает
mixedБудет возвращено первое значение в коллекции.
firstMatch()source public
firstMatch( array $conditions )
Возвращает первый результат, соответствующий всем парам ключ-значение, перечисленным в условиях.
Параметры
- массив
$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],
]
]; Параметры
- вызываемый/строка
$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'],
]; Параметры
- вызываемый/строка
$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( )
Возвращает true, если в этой коллекции есть элементы, иначе false.
Пример:
$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] Параметры
- строка/целое число
$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 )
Возвращает верхний элемент в этой коллекции после сортировки по свойству. Информацию о параметрах обратного вызова и $type см. в методе sortBy.
Примеры:
// 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 )
Возвращает нижний элемент в этой коллекции после сортировки по свойству. Информацию о параметрах обратного вызова и $type см. в методе sortBy.
Примеры:
// 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;
}); Параметры
- обратный вызов
$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]);
Параметры
- callable
$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 Параметры
- string|callable|null
$matcherнеобязательно null Имя свойства для суммирования или функция. Если значение не передано, будет использована функция идентичности. которая вернёт значение свойства для суммирования.
Возвращает
float|integertake()source public
take( integer $size 1 , integer $from 0 )
Возвращает новую коллекцию с максимальным числом $size элементов в внутреннем порядке, в котором эта коллекция была создана. Если передать второй параметр, он определит, с какой позиции начинать взятие элементов.
Параметры
- integer
$sizeнеобязательно 1 максимальное количество элементов для взятия из этой коллекции
- integer
$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);
}); Параметры
- callable
$handler Вызываемая функция, которая получит эту коллекцию в качестве первого аргумента.
Возвращает
Cake\Collection\CollectionInterfacetoArray()source public
toArray( boolean $preserveKeys true )
Возвращает массив, представляющий результаты.
Параметры
- boolean
$preserveKeysнеобязательно 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
$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]]
Параметры
- 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–2017 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.4/class-Cake.Collection.CollectionInterface.html