pisca / rarr
PHP 的数组类
0.0.13
2016-11-14 14:39 UTC
Requires
- php: >=5.4
- pisc/upperscore: *
Requires (Dev)
- phpunit/phpunit: 5.*
This package is not auto-updated.
Last update: 2024-09-14 19:42:06 UTC
README
rarr ✅
PHP 的数组类
安装
$ composer require pisc/arrr
实例化
// shorthand function (global function) $array = ar([ 'someKey' => 'someValue' ]); // constructor $array = new Arrr([ 'someKey' => 'someValue' ]); $array = new Ar([ 'someKey' => 'someValue' ]); // returns Ar instance $array->mapIt(function($item) { return $item . "_suffix"; }); // returns Arrr instance // factory $array = Arrr::ar([ 'someKey' => 'someValue' ]); $array = Arrr::instance([ 'someKey' => 'someValue' ]); $array = Ar::ar([ 'someKey' => 'someValue' ]); $array = Ar::instance([ 'someKey' => 'someValue' ]);
如何使用
use pisc\arrr\arrr; $array = ar([ 'someKey' => 'someValue' ]);
$flat = Ar::flatten([ 'cow', [ 'bear', ['bunny', 'santa' ], 'rabbit' ]]);
大多数方法可以这样调用
- 静态方法,第一个参数为数组 - Ar::map($array, function($item) { return $item; })
- 实例方法,返回 Arrr 的新实例 - $Arrr->map(function($item) { return $item; })
- 实例方法,在当前实例上工作 - $Arrr->mapIt(function($item) { return $item; })
约定
所有以 'It' 结尾的方法都会修改数组本身并返回本身,所以你可以这样做
$places = ar([ 'Amsterdam', 'Berlin', 'Paris', 'Vienna', 'Rome', 'Madrid' ]); $places->filterIt(function($place) { return in_array($place[0], [ 'A', 'V', 'R' ]); }); $places->mapIt(function($place) { return "To destination {$place}"; }) echo $places->toJson(); // returns '[ "To destination Amsterdam", "To destination Vienna", "To destination Rome" ]'
运行测试
# When installed globally $ phpunit # When installed locally $ ./vendor/bin/phpunit
方法
sortBy (sortByIt)
按多个键或闭包的结果对数组进行排序。当比较函数的结果为 0 时,将测试下一个键或闭包
接受
- $sortByKeys ((array) string / closure )
- $methods ((array) string / callable )
$array = ar([ (object)[ 'id' => 1, 'name' => 'Jack', 'length' => 180 ], (object)[ 'id' => 2, 'name' => 'Jack', 'length' => 150 ], (object)[ 'id' => 3, 'name' => 'Ben', 'length' => 180 ], (object)[ 'id' => 4, 'name' => 'Ben', 'length' => 150 ], (object)[ 'id' => 5, 'name' => 'Vince', 'length' => 180 ], (object)[ 'id' => 6, 'name' => 'Vince', 'length' => 150 ], ]); $sortedArray = $array->sortBy([ 'length', 'name' ], [ 'Sort::byDefault', 'strcmp' ]); // result [ (object)[ 'id' => 4, 'name' => 'Ben', 'length' => 150 ], (object)[ 'id' => 2, 'name' => 'Jack', 'length' => 150 ], (object)[ 'id' => 6, 'name' => 'Vince', 'length' => 150 ], (object)[ 'id' => 3, 'name' => 'Ben', 'length' => 180 ], (object)[ 'id' => 1, 'name' => 'Jack', 'length' => 180 ], (object)[ 'id' => 5, 'name' => 'Vince', 'length' => 180 ], ]