rikudou / array-sort
用于排序数组的类
v1.0.1
2017-11-01 15:02 UTC
Requires
- php: >=7
Requires (Dev)
- phpunit/phpunit: 6.4.*
This package is auto-updated.
Last update: 2024-08-29 01:48:47 UTC
README
简单的数组排序类,它只是内置PHP函数的包装器。
所有排序方法都在数组的副本上执行,它们不会修改原始数组,并返回数组。或者抛出 \rikudou\ArraySortException
。
安装
使用composer: composer require rikudou/array-sort
用法
为了更好地控制排序方法,可以通过类型进行链式调用。
示例
<?php use rikudou\ArraySort; $array = [ 1, 2, 3, 4, 5 ]; $sorter = new ArraySort($array); $sortedArray = $sorter->byValue()->maintainKeys()->sortReverse();
所有方法都是这样链式调用的。
类型
byValue()
maintainKeys()
discardKeys()
byKey()
魔法方法
这个类也可以与魔法方法一起使用,因此您不必编写整个链。
示例
<?php use rikudou\ArraySort; $array = [ 1, 2, 3, 4, 5 ]; $sorter = new ArraySort($array); $sortedArray = $sorter->sortReverse();
行为由类的优先级控制,默认情况下是
- 按值排序
- 保持键
- 丢弃键
- 按键排序
可以通过使用带有 ArraySortPrecedenceConstants
类的帮助的静态方法 setOrder()
来更改顺序。
示例
<?php use rikudou\ArraySort; use rikudou\ArraySortPrecedenceConstants; ArraySort::setOrder([ ArraySortPrecedenceConstants::BY_KEY ]);
这表示默认情况下将查找按键排序方法中的魔法方法。
您不必指定所有顺序,其余的将自动按默认顺序附加。
所以上面的代码等同于以下代码
- 按键排序
- 按值排序
- 保持键
- 丢弃键
另一个示例
<?php use rikudou\ArraySort; use rikudou\ArraySortPrecedenceConstants; ArraySort::setOrder([ ArraySortPrecedenceConstants::DISCARD_KEY ]);
这意味着
- 按值排序
- 丢弃键
- 保持键
- 按键排序
当然,您也可以设置整个顺序
<?php use rikudou\ArraySort; use rikudou\ArraySortPrecedenceConstants; ArraySort::setOrder([ ArraySortPrecedenceConstants::BY_KEY, ArraySortPrecedenceConstants::BY_VALUE, ArraySortPrecedenceConstants::DISCARD_KEY, ArraySortPrecedenceConstants::MAINTAIN_KEY ]);
这等同于
- 按键排序
- 按值排序
- 丢弃键
- 保持键
魔法方法使用反射,所以它比正常链式调用慢,但它也使用缓存,所以如果它在类中找到一次方法,之后它会使用该类而无需再次查找。
如果更改顺序,则缓存将被刷新,并且必须重新查找所有魔法方法调用。
所有魔法方法都有docblock注释,因此IDE应该能够提示方法名称。