fyre / collection
一个集合库。
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.59
- fyre/php-cs-fixer-config: ^1.0
- phpunit/phpunit: ^10
README
FyreCollection 是一个免费的、开源的 PHP 集合库。
目录
安装
使用 Composer
composer require fyre/collection
在 PHP 中
use Fyre\Collection\Collection;
创建集合
$source可以是一个数组,一个返回 Generator 的 Closure,或者一个 Traversable 或 JsonSerializable 对象。
$collection = new Collection($source);
空集合
创建一个空集合。
$collection = Collection::empty();
范围
创建一个数字范围的集合。
$from是表示范围开始的整数。$to是表示范围结束的整数。
$collection = Collection::range($from, $to);
集合迭代
Collection 是 Iterator 的实现,可以在 foreach 循环中使用。
foreach ($collection AS $key => $value) { }
集合方法
Avg
获取键的平均值。
$valuePath是一个表示值路径的字符串或数组,或者是一个接收项目键作为参数的 Closure,应该返回值,默认为 null。
$avg = $collection->avg($valuePath);
缓存
通过新的集合缓存计算值。
$cache = $collection->cache();
块
将集合拆分为块。
$size是表示每个块大小的数字。$preserveKey是一个布尔值,指示是否保留键,默认为 false。
$chunk = $collection->chunk($size, $preserveKeys);
收集
将计算值收集到新的集合中。
$collect = $collection->collect();
组合
使用给定的值按给定键重新索引集合中的项目。
$keyPath是表示新键路径的字符串或数组,或者是一个接收项目键作为参数的 Closure,应该返回新键。$valuePath是表示值路径的字符串或数组,或者是一个接收项目键作为参数的 Closure,应该返回值。
$combine = $collection->combine($keyPath, $valuePath);
计数
计算集合中所有项的数量。
$count = $collection->count();
按计数
根据给定的键对集合中的项进行分组,并计算每个组中的项目数量。
$keyPath是表示分组键路径的字符串或数组,或者是一个接收项目键作为参数的 Closure,应该返回分组键。
$countBy = $collection->countBy($keyPath);
点
使用“点”表示法展开多维集合。
$dot = $collection->dot();
每个
对集合中的每个项目执行回调。
$callback是接收项目键作为参数的 Closure。
$collection->each($callback);
每个
确定集合中的每个项目是否通过回调。
$callback是接收项目键作为参数的 Closure,应该返回一个布尔值。
$every = $collection->every($callback);
除了
返回不包含指定键的集合。
$keys是包含要删除的键的数组。
$except = $collection->except($callback);
提取
使用“点”表示法从集合中提取值。
$valuePath是表示值路径的字符串或数组,或者是一个接收项目键作为参数的 Closure,应该返回值。
$extract = $collection->extract($valuePath);
过滤器
使用回调函数过滤集合中的项。
$callback是接收项目键作为参数的 Closure,应该返回一个布尔值。
$filter = $collection->filter($callback);
找到
找到集合中通过回调的第一个值。
$callback是接收项目键作为参数的 Closure,应该返回一个布尔值。
$find = $collection->find($callback);
找到最后一个
找到集合中通过回调的最后一个值。
$callback是接收项目键作为参数的 Closure,应该返回一个布尔值。
$findLast = $collection->findLast($callback);
第一个
获取集合中的第一个值。
$first = $collection->first();
扁平化
将多维集合扁平化到单级。
$maxDepth是表示最大扁平化深度的数字,默认为 PHP_INT_MAX。
$flatten = $collection->flattened($maxDepth);
翻转
交换集合中的键和值。
$flip = $collection->flip();
按组分组
按给定的键对集合中的项进行分组。
$keyPath是表示新键路径的字符串或数组,或者是一个接收项目键作为参数的 Closure,应该返回新键。
$groupBy = $collection->groupBy($keyPath);
包含
检查给定的值是否存在于集合中。
$value是要测试的值。
$includes = $collection->includes($value);
按索引分组
按给定的键重新索引集合中的项。
$keyPath是表示新键路径的字符串或数组,或者是一个接收项目键作为参数的 Closure,应该返回新键。
$indexBy = $collection->indexBy($keyPath);
索引位置
在集合中搜索给定的值并返回第一个键。
$value是要测试的值。
$indexOf = $collection->indexOf($value);
是否为空
确定集合是否为空。
$isEmpty = $collection->isEmpty();
连接
使用指定的分隔符连接集合中的项。
$glue是一个表示要连接的分隔符的字符串。$finalGlue是一个表示最终连接分隔符的字符串,默认为null。
$join = $collection->join($glue, $finalGlue);
键
获取集合中的键。
$keys = $collection->keys();
最后一个
获取集合中的最后一个值。
$last = $collection->last();
最后一个索引位置
在集合中搜索给定的值并返回最后一个键。
$value是要测试的值。
$lastIndexOf = $collection->lastIndexOf($value);
嵌套列表
将嵌套项扁平化为列表。
$order是一个表示顺序的字符串,默认为"desc"。$nestingKey是一个表示嵌套键的字符串,默认为"children"。
$listNested = $collection->listNested($order, $nestingKey);
映射
将回调函数应用于集合中的项。
$callback是一个接收项和键作为参数的Closure,并应返回新值。
$map = $collection->map($callback);
最大值
获取键的最大值。
$valuePath是一个表示值路径的字符串或数组,或者是一个接收项目键作为参数的 Closure,应该返回值,默认为 null。
$max = $collection->max($valuePath);
中值
获取键的中值。
$valuePath是一个表示值路径的字符串或数组,或者是一个接收项目键作为参数的 Closure,应该返回值,默认为 null。
$median = $collection->median($valuePath);
合并
将一个或多个可迭代对象合并到集合中。
提供的所有参数必须是数组或Iterator,并将与集合合并。
$merge = $collection->merge(...$iterables);
最小值
获取键的最小值。
$valuePath是一个表示值路径的字符串或数组,或者是一个接收项目键作为参数的 Closure,应该返回值,默认为 null。
$min = $collection->min($valuePath);
嵌套
在父项内部嵌套子项。
$idPath是一个表示ID路径的字符串或数组,或是一个接收项和键作为参数的Closure,应返回ID,默认为"id"。$parentPath是一个表示父ID路径的字符串或数组,或是一个接收项和键作为参数的Closure,应返回父ID,默认为"id"。$nestingKey是一个表示嵌套键的字符串,默认为"children"。
$nest = $collection->nest($idPath, $parentPath, $nestingKey);
空值
确定集合中没有项通过回调函数。
$callback是接收项目键作为参数的 Closure,应该返回一个布尔值。
$none = $collection->none($callback);
仅
返回只包含指定键的集合。
$keys是一个包含要包含的键的数组。
$only = $collection->only($callback);
打印嵌套
根据深度格式化嵌套列表项。
$valuePath是一个表示值路径的字符串或数组,或是一个接收项和键作为参数的Closure,应返回值,默认为"id"。$idPath是一个表示ID路径的字符串或数组,或是一个接收项和键作为参数的Closure,应返回ID,默认为"id"。$nestingKey是一个表示嵌套键的字符串,默认为"children"。
$printNested = $collection->printNested($valuePath, $idPath, $prefix, $nestingKey);
随机值
从集合中拉取一个随机项。
$randomValue = $collection->randomValue();
减少
使用回调函数迭代地将集合减少到单个值。
$callback是一个接收累计值、项和键作为参数的Closure,并应返回下一个值。$initial是初始值,默认为null。
$reduce = $collection->reduce($callback, $initial);
拒绝
使用回调函数排除集合中的项。
$callback是接收项目键作为参数的 Closure,应该返回一个布尔值。
$reject = $collection->reject($callback);
反转
反转集合中项的顺序。
$reverse = $collection->reverse();
洗牌
随机化集合中项的顺序。
$shuffle = $collection->shuffle();
跳过
跳过集合中的若干项。
$length是一个表示要跳过的项数的数字。
$skip = $collection->skip($length);
跳过直到
跳过集合中的项,直到回调返回true。
$callback是接收项目键作为参数的 Closure,应该返回一个布尔值。
$skipUntil = $collection->skipUntil($callback);
跳过当
跳过集合中的项,直到回调返回false。
$callback是接收项目键作为参数的 Closure,应该返回一个布尔值。
$skipWhile = $collection->skipWhile($callback);
某些
确定集合中是否有一些项通过回调函数。
$callback是接收项目键作为参数的 Closure,应该返回一个布尔值。
$some = $collection->some($callback);
排序
使用回调函数对集合进行排序。
$callback是一个 闭包,它接收两个用于比较的项目,并应返回一个整数以确定排序顺序。
$sort = $collection->sort($callback);
或者,您可以按升序排序集合项。
$sort是一个表示排序标志的数字,默认为 Collection::SORT_NATURAL。
$sort = $collection->sort($sort);
排序方式
根据给定键对集合进行排序。
$valuePath是一个表示值路径的字符串或数组,或者是一个接收项目键作为参数的 Closure,应该返回值,默认为 null。$sort是一个表示排序标志的数字,默认为 Collection::SORT_NATURAL。$descending是一个布尔值,表示是否按降序排序,默认为 false。
$sortBy = $collection->sortBy($valuePath, $sort, $descending);
总和
获取键的总和。
$valuePath是一个表示值路径的字符串或数组,或者是一个接收项目键作为参数的 Closure,应该返回值,默认为 null。
$sumOf = $collection->sumOf($valuePath);
取
取集合中的若干项。
$length是一个表示要跳过的项数的数字。
$take = $collection->take($length);
取直到
取集合中的项,直到回调返回 true。
$callback是接收项目键作为参数的 Closure,应该返回一个布尔值。
$takeUntil = $collection->takeUntil($callback);
取直到
取集合中的项,直到回调返回 false。
$callback是接收项目键作为参数的 Closure,应该返回一个布尔值。
$takeWhile = $collection->takeWhile($callback);
转换为数组
获取集合中的项作为数组。
$array = $collection->toArray();
转换为 JSON
$json = $collection->toJson();
转换为列表
获取集合中的值作为数组。
$list = $collection->toList();
唯一
根据给定键获取集合中的唯一项。
$valuePath是一个表示值路径的字符串或数组,或者是一个接收项目键作为参数的 Closure,应该返回值,默认为 null。$strict是一个布尔值,表示是否执行严格相等性检查,默认为 false。
$unique = $collection->unique($valuePath, $strict);
值
获取集合中的值。
$values = $collection->values();
连接
将一个或多个可迭代对象与集合连接。
所有提供的参数必须是数组或 迭代器,并将与集合连接。
$zip = $collection->zip(...$iterables);