rmtram / sorter
多个数组的简单排序。
v2.0.0
2019-12-21 12:03 UTC
Requires
- php: >=7.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- phpunit/phpunit: ~8.0
This package is auto-updated.
Last update: 2024-09-21 23:06:04 UTC
README
Sorter
多个数组的简单排序。
安装
$ composer require rmtram/sorter
或者
复制文件: src/Sorter.php
require '/path/to/Sorter.php';
内容
- [静态] make(array $items)
- [静态] runSort(array $items, array $orders, $select = [], $offset = null, $limit = null)
- sort(array $orders)
- select(array $attributes)
- offset(int|null $int = null)
- limit(int|null $int = null)
方法
make
- 创建实例。
$items = [ ['id' => 1, 'name' => 'abc', 'created_at' => '2015-10-14 10:10:01'], ['id' => 2, 'name' => 'def', 'created_at' => '2015-10-14 10:10:05'], ['id' => 5, 'name' => 'mno', 'created_at' => '2015-10-14 10:10:39'], ['id' => 3, 'name' => 'ghi', 'created_at' => '2015-10-14 10:10:09'] ]; $sorter = Rmtram\Sorter\Sorter::make($items);
runSort
$items = [ ['id' => 1, 'name' => 'abc', 'created_at' => '2015-10-14 10:10:01'], ['id' => 2, 'name' => 'def', 'created_at' => '2015-10-14 10:10:05'], ['id' => 5, 'name' => 'mno', 'created_at' => '2015-10-14 10:10:39'], ['id' => 3, 'name' => 'ghi', 'created_at' => '2015-10-14 10:10:09'] ]; $results = Rmtram\Sorter\Sorter::runSort($items, ['id' => 'asc'], ['id'], 1, 1); var_dump($results);
- 结果
array(1) {
[0]=>
array(1) {
["id"]=>
int(2)
}
}
sort
单个(id => 升序)
- 源代码
$items = [ ['id' => 1, 'name' => 'abc', 'created_at' => '2015-10-14 10:10:01'], ['id' => 2, 'name' => 'def', 'created_at' => '2015-10-14 10:10:05'], ['id' => 5, 'name' => 'mno', 'created_at' => '2015-10-14 10:10:39'], ['id' => 3, 'name' => 'ghi', 'created_at' => '2015-10-14 10:10:09'] ]; $results = Rmtram\Sorter\Sorter::make($items)->sort(['id' => 'asc']); var_dump($results);
- 结果
array(4) {
[0]=>
array(3) {
["id"]=>
int(1)
["name"]=>
string(3) "abc"
["created_at"]=>
string(19) "2015-10-14 10:10:01"
}
[1]=>
array(3) {
["id"]=>
int(2)
["name"]=>
string(3) "def"
["created_at"]=>
string(19) "2015-10-14 10:10:05"
}
[2]=>
array(3) {
["id"]=>
int(3)
["name"]=>
string(3) "ghi"
["created_at"]=>
string(19) "2015-10-14 10:10:09"
}
[3]=>
array(3) {
["id"]=>
int(5)
["name"]=>
string(3) "mno"
["created_at"]=>
string(19) "2015-10-14 10:10:39"
}
}
多个
- 源代码
$items = [ ['id' => 1, 'name' => 'b', 'age' => 9, 'created_at' => '2015-10-10 10:10:00'], ['id' => 2, 'name' => 'a', 'age' => 9, 'created_at' => '2015-10-10 10:10:10'], ['id' => 3, 'name' => 'z', 'age' => 3, 'created_at' => '2015-10-10 10:10:20'], ['id' => 5, 'name' => 'f', 'age' => 11, 'created_at' => '2015-10-10 10:10:15'], ['id' => 4, 'name' => 'e', 'age' => 16, 'created_at' => '2015-10-10 10:10:20'], ['id' => 6, 'name' => 'o', 'age' => 15, 'created_at' => '2015-10-10 10:10:05'] ]; $results = Rmtram\Sorter\Sorter::make($items)->sort([ 'age' => 'asc', 'created_at' => 'asc', 'id' => 'desc' ]); var_dump($results);
- 结果
array(6) {
[0]=>
array(4) {
["id"]=>
int(3)
["name"]=>
string(1) "z"
["age"]=>
int(3)
["created_at"]=>
string(19) "2015-10-10 10:10:20"
}
[1]=>
array(4) {
["id"]=>
int(1)
["name"]=>
string(1) "b"
["age"]=>
int(9)
["created_at"]=>
string(19) "2015-10-10 10:10:00"
}
[2]=>
array(4) {
["id"]=>
int(2)
["name"]=>
string(1) "a"
["age"]=>
int(9)
["created_at"]=>
string(19) "2015-10-10 10:10:10"
}
[3]=>
array(4) {
["id"]=>
int(5)
["name"]=>
string(1) "f"
["age"]=>
int(11)
["created_at"]=>
string(19) "2015-10-10 10:10:15"
}
[4]=>
array(4) {
["id"]=>
int(6)
["name"]=>
string(1) "o"
["age"]=>
int(15)
["created_at"]=>
string(19) "2015-10-10 10:10:05"
}
[5]=>
array(4) {
["id"]=>
int(4)
["name"]=>
string(1) "e"
["age"]=>
int(16)
["created_at"]=>
string(19) "2015-10-10 10:10:20"
}
}
select
单个
- 源代码
$items = [ ['id' => 1, 'name' => 'abc', 'created_at' => '2015-10-14 10:10:01'], ['id' => 2, 'name' => 'def', 'created_at' => '2015-10-14 10:10:05'], ['id' => 5, 'name' => 'mno', 'created_at' => '2015-10-14 10:10:39'], ['id' => 3, 'name' => 'ghi', 'created_at' => '2015-10-14 10:10:09'] ]; $results = Rmtram\Sorter\Sorter::make($items)->refuse('age')->sort(['id' => 'asc']); var_dump($results);
- 结果
array(4) {
[0]=>
array(1) {
["id"]=>
int(1)
}
[1]=>
array(1) {
["id"]=>
int(2)
}
[2]=>
array(1) {
["id"]=>
int(3)
}
[3]=>
array(1) {
["id"]=>
int(5)
}
}
多个
- 源代码
$items = [ ['id' => 1, 'name' => 'abc', 'created_at' => '2015-10-14 10:10:01'], ['id' => 1, 'name' => 'bac', 'created_at' => '2015-10-14 10:10:01'], ['id' => 2, 'name' => 'def', 'created_at' => '2015-10-14 10:10:05'], ['id' => 5, 'name' => 'mno', 'created_at' => '2015-10-14 10:10:39'], ['id' => 3, 'name' => 'ghi', 'created_at' => '2015-10-14 10:10:09'] ]; $sortedItems = Rmtram\Sorter\Sorter::make($items)->select(['id', 'name'])->sort(['id' => 'asc', 'name' => 'desc']); var_dump($sortedItems);
- 结果
array(5) {
[0]=>
array(2) {
["id"]=>
int(1)
["name"]=>
string(3) "bac"
}
[1]=>
array(2) {
["id"]=>
int(1)
["name"]=>
string(3) "abc"
}
[2]=>
array(2) {
["id"]=>
int(2)
["name"]=>
string(3) "def"
}
[3]=>
array(2) {
["id"]=>
int(3)
["name"]=>
string(3) "ghi"
}
[4]=>
array(2) {
["id"]=>
int(5)
["name"]=>
string(3) "mno"
}
}
offset
Offset null === offset 0
!!! 重要 !!!
修改了偏移量的实现。
之前
offset(0) => 0
offset(1) => 0
offset(2) => 1
offset(3) => 2
之后
offset(0) => 0
offset(1) => 1
offset(2) => 2
offset(3) => 3
- 源代码
$items = [ ['id' => 1, 'name' => 'abc', 'created_at' => '2015-10-14 10:10:01'], ['id' => 2, 'name' => 'def', 'created_at' => '2015-10-14 10:10:05'], ['id' => 5, 'name' => 'mno', 'created_at' => '2015-10-14 10:10:39'], ['id' => 3, 'name' => 'ghi', 'created_at' => '2015-10-14 10:10:09'] ]; $results = Rmtram\Sorter\Sorter::make($items) ->offset(3) ->sort(['id' => 'asc']); var_dump($results);
- 结果
array(1) {
[0]=>
array(3) {
["id"]=>
int(5)
["name"]=>
string(3) "mno"
["created_at"]=>
string(19) "2015-10-14 10:10:39"
}
}
limit
为 null 时不限制
- 源代码
$items = [ ['id' => 1, 'name' => 'abc', 'created_at' => '2015-10-14 10:10:01'], ['id' => 2, 'name' => 'def', 'created_at' => '2015-10-14 10:10:05'], ['id' => 5, 'name' => 'mno', 'created_at' => '2015-10-14 10:10:39'], ['id' => 3, 'name' => 'ghi', 'created_at' => '2015-10-14 10:10:09'] ]; $results = Rmtram\Sorter\Sorter::make($items) ->limit(1) ->sort(['id' => 'asc']); var_dump($results);
- 结果
array(1) {
[0]=>
array(3) {
["id"]=>
int(1)
["name"]=>
string(3) "abc"
["created_at"]=>
string(19) "2015-10-14 10:10:01"
}
}
支持的版本。
- PHP
- 7.2
- 7.3
- 7.4
许可证
MIT 许可证 (MIT)
版权所有 © 2016 Rmtram
本软件及关联文档文件的副本(“软件”)的使用,免费授予任何获得副本的个人,用于在不加限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供的人士进行上述操作,但需遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“现状”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、针对特定目的的适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他方式,源于、因之而起或与此软件或软件的使用或其他交易有关。