主轴 / 集合
最快的集合(array_map, array_reduce, ..)包装器
0.0.3
2017-06-25 10:34 UTC
Requires
- php: >=5.6
Requires (Dev)
- phpunit/phpunit: ^4.8
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2024-09-04 14:50:40 UTC
README
最快的集合库
- 使用
eval()
构建代码并运行 - 非常快速 & 低内存使用
- 您不得将用户的输入传递给此库。这可能会引起代码注入漏洞。
用法
composer require 'spindle/collection'
<?php require_once 'vendor/autoload.php'; use Spindle\Collection\Collection as _; _::range(1, 100) ->filter('$_ % 2') ->map('$_ * 2') ->assignTo($val); var_dump($val->toArray());
方法
map($fn)
_::range(1,4)->map('$_ * 2')->dump(); // 2,4,6,8
filter($fn)
$fn($_) == true
==> 保留$fn($_) == false
==> 移除
_::range(1,4)->filter('$_ % 2')->dump(); // 1,3
reject($fn)
$fn($_) == true
==> 移除$fn($_) == false
==> 保留
_::range(1,4)->reject('$_ % 2')->dump(); // 2,4
unique()
_::from([1,1,2,1])->unique()->dump(); // 1
column(array|string $columns)
受 array_column
启发。
$a = ['a' => 1, 'b' => 2, 'c' => 3]; _::from([$a, $a])->column(['a', 'c'])->dump(); // ['a' => 1, 'c' => 3], ['a' => 1, 'c' => 3]; _::from([$a, $a])->column('a')->dump(); // 1, 1; _::from([$a, $a])->column(['a'])->dump(); // ['a' => 1], ['a' => 1]
slice($offset, $length = null)
chunk($size)
reduce($fn, $initial = null)
不可链式
$max = _::from([1,2,3,4])->reduce('$_ > $_carry ? $_ : $_carry');
sum()
product()
flip()
交换值和键。
_::from(['a' => 1, 'b' => 2, 'c' => 3])->flip()->dump(); // [1 => 'a', 2 => 'b', 3 => 'c'];
sort($sort_flags = \SORT_REGULAR)
rsort($sort_flags = \SORT_REGULAR)
usort(callable $cmp)
assignTo(&$val)
导出到变量
$val = _::from([1,2,3])->map('$_ * 2'); // equals _::from([1,2,3])->map('$_ * 2')->assignTo($val);
dump()
$_->dump(); // equals var_dump($_->toArray());