jmf / sort
按键、属性等对数组进行排序
1.0.0
2024-06-01 15:40 UTC
Requires
- php: >=8.3
- symfony/property-access: ^6.0|^7.0
- webmozart/assert: ^1.0
Requires (Dev)
- phing/phing: ^2.17
- phpmd/phpmd: ^2.13
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^11.1
- rector/rector: ^1.0
- squizlabs/php_codesniffer: ^3.8
README
安装与需求
使用 Composer 安装 Composer
composer require jmf/sort
用法
关联排序器
对提供的数组进行排序,保留键值关联。
<?php use Jmf\Sort\AssociativeSorter; $sorter = new AssociativeSorter(); $unsorted = [ 'foo' => 'def', 'bar' => 'abc', 'baz' => 'ghi', ]; $sorted = $sorter->sort($unsorted);
按键排序器
按键对提供的数组进行排序。
<?php use Jmf\Sort\ByKeySorter; $sorter = new ByKeySorter(); $unsorted = [ 'def' => 'foo', 'abc' => 'bar', 'ghi' => 'baz', ]; $sorted = $sorter->sort($unsorted);
按值排序器
按值对提供的数组进行排序,丢失键值关联。
<?php use Jmf\Sort\ByValueSorter; $sorter = new ByValueSorter(); $unsorted = [ 'def', 'abc', 'ghi', ]; $sorted = $sorter->sort($unsorted);
按属性排序器
根据一个或多个属性对提供的数组(数组或对象数组)进行排序,并保留键值关联。
属性路径语法来自 Symfony PropertyAccess 组件。
排序数组
<?php use Jmf\Sort\ByPropertySorter; $sorter = ByPropertySorter::createDefault(); $unsorted = [ ['foo' => 'def', 'bar' => 123], ['foo' => 'abc', 'bar' => 123], ['foo' => 'abc', 'bar' => 23], ['foo' => 'ghi', 'bar' => 345], ]; $sorted = $sorter->sort( $unsorted, [ PropertyPass::asc( '[foo]', ), PropertyPass::desc( '[bar]', SORT_NUMERIC, ), ] );
排序对象
<?php use Jmf\Sort\ByPropertySorter; $sorter = ByPropertySorter::createDefault(); $articles = getArticles(); // Objects from a repository. $sorted = $sorter->sort( $articles, [ PropertyPass::desc( 'publicationDate', ), PropertyPass::asc( 'author.name', ), PropertyPass::asc( 'title', ), ] );