dimaskao/sorter

这个库可以排序数组。

v2.0.1 2020-08-24 11:49 UTC

This package is auto-updated.

Last update: 2024-09-24 20:41:40 UTC


README

这个库可以使用数字和字母对数组进行排序。

目录

安装

您可以使用composer来安装此扩展。

只需运行

$ composer require dimaskao/sorter

如何使用

通用

首先包含此库类

require_once __DIR__ . '/XXXXX/vendor/autoload.php';

use Dimaskao\Sorter\Sorter //required class

use Dimaskao\Sorter\NullSorter; //|\
use Dimaskao\Sorter\SortASC;    //|- Choose what you need
use Dimaskao\Sorter\SortDESC;   //|/

其中 XXXXX 是库根目录的路径。

如果您想排序数组,创建 Sorter 对象并传递 SortASCSortDESC 对象。

$sorter = new Sorter(new SortASC());

然后使用 ->sort() 方法并传入一个数组。此方法将返回一个排序后的数组。

$sorter->sort($array);

此库使用策略模式,因此您可以通过 -setSorter() 改变排序方法。只需传递一个新的排序对象即可。

$sorter = new Sorter(new SortDESC());

$sorter->setSorter(new SortASC());

NullSorter

对于调试,您可以使用 NullSorter()

$sorter->setSorter(new SortASC());//this will sort array
$sorter->setSorter(new NullSorter());//this would not sort array
$b = $sorter->sort($arr);

库扩展

如果您想添加新的排序格式,您应该创建一个实现 SorterInterface.php 的自己的类。

require_once __DIR__ . '/vendor/autoload.php';

use Dimaskao\Sorter\SorterInterface;

class YourFormat implements SorterInterface {

}

示例

让我们看看它是如何工作的。

require_once __DIR__ . 'vendor/autoload.php';

use Dimaskao\Sorter\NullSorter;
use Dimaskao\Sorter\SortASC;
use Dimaskao\Sorter\SortDESC;
use Dimaskao\Sorter\Sorter;

$arr = [9, 0, 1, 5, 77, -5];

$sorter = new Sorter(new SortDESC());
$a = $sorter->sort($arr);

\print_r($a);

$sorter->setSorter(new SortASC());
$b = $sorter->sort($arr);

\print_r($b);

$sorter->setSorter(new SortASC());
$sorter->setSorter(new NullSorter());
$b = $sorter->sort($arr);

\print_r($b);

结果如下。

Array
(
    [4] => 77
    [0] => 9
    [3] => 5
    [2] => 1
    [1] => 0
    [5] => -5
)
Array
(
    [5] => -5
    [1] => 0
    [2] => 1
    [3] => 5
    [0] => 9
    [4] => 77
)
Array
(
    [0] => 9
    [1] => 0
    [2] => 1
    [3] => 5
    [4] => 77
    [5] => -5
)