Интерфейс 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
Возвращает новую коллекцию в результате конкатенации списка элементов этой коллекции со списком переданных элементов.
- buffered() public
Возвращает новую коллекцию, где операции, выполняемые этой коллекцией, не выполняются многократно. Независимо от того, сколько раз новая коллекция итерируется, эти операции будут выполнены только один раз.
- chunk() 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.
- 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\CollectionInterfacebuffered()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\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;
}); Параметры
- 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
$coptional 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( )
Возвращает значение, есть ли элементы в этой коллекции
Пример:
$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( )
Возвращает последний результат в этой коллекции
Возвращает
смешанный типБудет возвращено последнее значение в коллекции.
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 )
Возвращает верхний элемент в этой коллекции после сортировки по свойству. Проверьте метод 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; Параметры
- вызываемый объект|строка
$callback - обратный вызов или имя столбца для использования при сортировке
- целое число
$typeнеобязательно SORT_NUMERIC тип сравнения для выполнения, либо SORT_STRING, SORT_NUMERIC или SORT_NATURAL
Возвращает
смешанный типЗначение верхнего элемента в коллекции
См. также
\Cake\Collection\CollectionIterface::sortBy()min()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; Параметры
- вызываемый объект|строка
$callback - обратный вызов или имя столбца для использования при сортировке
- целое число
$typeнеобязательно SORT_NUMERIC тип сравнения для выполнения, либо SORT_STRING, SORT_NUMERIC или SORT_NATURAL
Возвращает
смешанный типЗначение нижнего элемента в коллекции
См. также
\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 )
Возвращает новую коллекцию с максимальным количеством $size случайных элементов из этой коллекции
Параметры
- integer
$sizeнеобязательно 10 максимальное количество элементов для случайного извлечения из этой коллекции
Возвращает
Cake\Collection\CollectionInterfaceshuffle()source public
shuffle( )
Возвращает новую коллекцию с элементами в случайном порядке, эта функция не сохраняет исходные ключи в коллекции.
Возвращает
Cake\Collection\CollectionInterfaceskip()source public
skip( integer $howMany )
Возвращает новую коллекцию, которая пропустит указанное количество элементов в начале итерации.
Параметры
- integer
$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
$dirнеобязательно SORT_DESC - либо SORT_DESC, либо SORT_ASC
- integer
$typeнеобязательно SORT_NUMERIC тип сравнения для выполнения, либо SORT_STRING, либо SORT_NUMERIC, либо SORT_NATURAL
Возвращает
Cake\Collection\CollectionInterfacestopWhen()source public
stopWhen( callable $condition )
Создает новую коллекцию, которая при итерации прекратит выдавать результаты, если предоставленное условие принимает значение false.
Это полезно при работе с бесконечными итераторами или любым генератором, который может начать возвращать неверные элементы в определенный момент. Например, при чтении строк из потока файла вы можете остановить итерацию после достижения определенного значения.
Пример:
Получить массив строк в файле CSV до тех пор, пока столбец timestamp меньше заданной даты
$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, которые могут только замедлить процесс итерации.
Возвращает
Iteratorzip()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 () {
return array_sum(func_get_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.3/class-Cake.Collection.CollectionInterface.html