vcollect
是一个PHP c extension,提供流畅、便利的数组数据操作。
定位于PHP下的ext目录,执行
git clone https://github.com/VikinDev/v-collect.git
在扩展目录内,执行
phpize
./configure
make && make install
在php.ini文件中加入extension = vcollect.so
$test = vcollect([1, 2, 3, 4, 5, 6]);
^_^ | ^_^ | ^_^ | ^_^ | ^_^ | ^_^ | ^_^ | ^_^ | ^_^ | ^_^ |
---|---|---|---|---|---|---|---|---|---|
map | collapse | avg | has | mx | mi | toJson | toArray | take | pluck |
where |
遍历整个集合,并将key于val数值传入至回调函数;并且可以在回调函数中return来修改值;
$vcollect = vcollect([1, 2, 3, 4]);
$vcollect->map(function($key, $value) {
return $key+$value;
});
//[1, 3, 5, 7]
将集合转换为一维数组
$vcollect = vcollect([1, 2, [3, 4]]);
$vcollect->collapse();
你将得到:
[1, 2, 3, 4]
$vcollect = vcollect([1, 2, 3, 4, 5]);
$vcollect->avg();
您将得到一个整型或浮点型结果
(int)3
$vcollect = vcollect([
['a'=>4],
['a'=>6],
8
]);
$vcollect->avg('a');
您将得到一个整型或浮点型结果
(int)5
检查集合中是否含有指定的键
$vcollect = vcollect(['account_id' => 1, 'product' => 'Desk']);
$vcollect->has('email');
// false
返回集合中的最大值
$vcollect = vcollect([1,2,3,4,5]);
$vcollect->mx();
//(int)5
你也可以通过传入键值
来获取指定键的最大值
$vcollect = vcollect([
['a'=>1.1],
['a'=>4],
['a'=>8]
]
);
$vcollect->mx('a');
//(int)8
返回集合中的最小值
$vcollect = vcollect([1,2,3,4,5]);
$vcollect->mi();
//(int)1
你也可以通过传入键值
来获取指定键的最小值
$vcollect = vcollect([
['a'=>1.1],
['a'=>4],
['a'=>8]
]
);
$vcollect->mi('a');
//(float)1.1
将集合进行JSON编码
$vcollect = vcollect([
'a'=>4,
[1, 'a'=>2, 3],
[4, [ 5, 'a'=>6 ]]
]);
$vcollect->toJson();
//(string)'{"a":4,"0":{"0":1,"a":2,"1":3},"1":[4,{"0":5,"a":6}]}'
将集合结果转换为数组
$vcollect = vcollect([
'a'=>4,
[1, 'a'=>2, 3],
[4, [ 5, 'a'=>6 ]]
]);
$vcollect->collapse()->toArray();
//结果:
//array (size=6)
// 0 => int 4
// 1 => int 1
// 2 => int 2
// 3 => int 3
// 4 => int 4
// 5 =>
// array (size=2)
// 0 => int 5
// 'a' => int 6
获取指定数量的集合
$vcollect = vcollect([1,2,3,4,5]);
$vcollect->take(1)->toArray();
//(array)[1]
也可以通过传入负数从集合后面获取指定数量的集合
$vcollect->take(-2)->toArray();
//(array)[4, 5]
快速获取多层集合中指定「键」所有对应的值:
$vcollect = vcollect([
['developer' => ['name' => 'Taylor'], 'id' => 2],
['developer' => ['name' => 'Abigail'], 'id' => 5]
]);
$vcollect->pluck('developer.name');
//['Taylor', 'Abigail']
你也可以指定结果集的键
$vcollect->pluck('developer.name', 'id');
//[2=>'Taylor', 5=>'Abigail']
快速过滤或筛选集合
$vcollect = vcollect([
['developer' => ['name' => 'Taylor'], 'id' => 2],
['developer' => ['name' => 'Abigail'], 'id' => 5]
]);
$vcollect->where('developer.name', 'Taylor')->toArray();
//[ ['developer' => ['name' => 'Taylor'], 'id' => 2] ]