jopic / php-streams
用于流式处理数组/列表内容的库
Requires (Dev)
- phpdocumentor/phpdocumentor: 2.8.*
- phpunit/phpunit: 4.0.*
This package is auto-updated.
Last update: 2024-09-15 21:51:32 UTC
README
PHP数组内容流式处理的库。
要求
- PHP版本 >= 5.3
安装
添加以下composer依赖项:"jopic/php-streams": "1.0.3"
使用方法
初始化
该库区分列表(具有数字索引的数组)和其他数组。因此有两种初始化方式
$stream = Stream::ofList(array(1, 2, 3));
用于列表$arrayStream = Stream::ofArray(array("key1" => "value1""));
用于具有不同键类型的数组
限制
此方法允许您定义用于结果函数(each
、toArray
、collect
)的最大记录数
Stream::ofList(array(1, 2, 3)) ->limit(1) // limits the stream to the first element
跳过
此方法允许您定义要跳过的匹配元素的数量
Stream::ofList(array(1, 2, 3)) ->skip(1) // the resulting elements are (2, 3)
步长(仅适用于ListStream)
此方法允许您定义for循环的步长函数
Stream::ofList(array(1, 2, 3, 4, 5)) ->step(function($i) { return $i + 2; }); // will iterate over the following elements (1, 3, 5)
筛选
此方法允许您在流元素上应用筛选方法
Stream::ofList(array(1, 2, 3, 4, 5)) ->filter(function($item) { return $item % 2 == 0; }); // will filter the elements (2, 4)
映射
此方法允许您在流元素上应用映射函数
Stream::ofList(array(1, 2, 3)) ->map(function($item) { return $item + 1; }) ->toArray(); // will return the array(2, 3, 4)
重置
此方法重置使用limit
、skip
、step
和filter
所做的所有操作
Stream::ofList(array(1, 2, 3, 4, 5)) ->filter(function($item) { return $item % 2 == 0; }) // matching elements (2, 4) ->reset(); // matching elements (1, 2, 3, 4, 5)
each
此方法遍历所有匹配元素,并对每个元素执行给定的函数
Stream::ofList(array(1, 2, 3, 4, 5)) ->each(function($item) { echo $item; }); // will print all items
重要:ArrayStream的each
实现以两个参数key
和value
调用
toArray
此方法将所有匹配元素收集到PHP数组中
Stream::ofList(array(1, 2, 3, 4, 5)) ->skip(2) ->limit(2) ->toArray(); // will return array(3, 4)
collect(仅适用于ListStream)
此方法将所有匹配元素收集到由给定分隔符分隔的字符串中
Stream::ofList(array(1, 2, 3)) ->collect(','); // will return "1,2,3"
sum
此方法对所有匹配元素进行求和。当数组中的所有值都是相同的数值数据类型或定义了map
函数时,此功能可用。
Stream::ofList(array(1, 2, 3)) ->sum(); // will return 6
min
此方法返回所有匹配元素的最小值。当数组中的所有值都是相同的数值数据类型或定义了map
函数时,此功能可用。
Stream::ofList(array(1, 2, 3)) ->min(); // will return 1
max
此方法返回所有匹配元素的最大值。当数组中的所有值都是相同的数值数据类型或定义了map
函数时,此功能可用。
Stream::ofList(array(1, 2, 3)) ->max(); // will return 3
avg
此方法返回所有匹配元素的平均值。当数组中的所有值都是相同的数值数据类型或定义了map
函数时,此功能可用。
Stream::ofList(array(1, 2, 3, 4)) ->avg(); // will return 2.5
示例
跳过第一个元素,筛选奇数值,将结果限制为3,并将匹配元素收集到连接字符串中的示例
Stream::ofList(array(1, 2, 3, 4, 5, 6)) ->skip(1) ->filter(function($item) { return $item % 2 == 1; }) ->limit(3) ->collect(', ') // will return "3, 5"
关联数组示例(筛选键是数字,并返回作为数组的匹配元素)
Stream::ofArray(array( "key1" => "value1", "key2" => 2, "key3" => 3, 4 => "value 4" )) ->filter(function($key, $value) { return is_numeric($key); }) ->toArray(); // will return array(4 => "value 4")
问题或改进
如果您发现任何问题或对改进库有想法,请勿犹豫,在github项目上提出问题。
版权 & 许可证
版权 2015 Johannes Pichler
根据Apache License,版本2.0(“许可证”);除非根据适用法律或书面同意,否则不得使用此文件,除非符合许可证。您可以在以下位置获得许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”分发,不提供任何明示或暗示的保证或条件。有关许可证的具体语言管辖权限和限制,请参阅许可证。