lemurro/lib-sorter

PHP 库 Sorter - 根据指定键对关联数组进行排序

v1.0.0 2019-05-08 09:30 UTC

This package is auto-updated.

Last update: 2024-09-08 20:39:11 UTC


README

根据指定键对关联数组进行排序

安装

composer require lemurro/lib-sorter

使用

$sorter->run(&$array, $key_name, $order_type, $save_keys = true);
  • &$array array (必需) - 数据数组(按引用传递)
  • $key_name string (必需) - 键名
  • $order_type string (必需) - 排序类型 ('asc'|'desc')
  • $save_keys boolean (可选) - 保存键(true|false),默认为 true

保留键的排序(默认)

use Lemurro\Lib\Sorter\Sorter;

$sorter = new Sorter();

$array = [
    'z' => [
        'field1' => 'A',
        'field2' => 'orange',
    ],
    'x' => [
        'field1' => 'C',
        'field2' => 'apple',
    ],
    'c' => [
        'field1' => 'B',
        'field2' => 'peach',
    ],
];

$sorter->run($array, 'field1', 'asc');

var_dump($array);
/*
[
    'z' => [
        'field1' => 'A'
        'field2' => 'orange'
    ]
    'c' => [
        'field1' => 'B'
        'field2' => 'peach'
    ]
    'x' => [
        'field1' => 'C'
        'field2' => 'apple'
    ]
]
*/
use Lemurro\Lib\Sorter\Sorter;

$sorter = new Sorter();

$array = [
    'z' => [
        'field1' => 'A',
        'field2' => 'orange',
    ],
    'x' => [
        'field1' => 'C',
        'field2' => 'apple',
    ],
    'c' => [
        'field1' => 'B',
        'field2' => 'peach',
    ],
];

$sorter->run($array, 'field2', 'desc');

var_dump($array);
/*
[
    'x' => [
        'field1' => 'C'
        'field2' => 'apple'
    ]
    'c' => [
        'field1' => 'B'
        'field2' => 'peach'
    ]
    'z' => [
        'field1' => 'A'
        'field2' => 'orange'
    ]
]
*/

不保留键的排序

use Lemurro\Lib\Sorter\Sorter;

$sorter = new Sorter();

$array = [
    'z' => [
        'field1' => 'A',
        'field2' => 'orange',
    ],
    'x' => [
        'field1' => 'C',
        'field2' => 'apple',
    ],
    'c' => [
        'field1' => 'B',
        'field2' => 'peach',
    ],
];

$sorter->run($array, 'field1', 'asc', false);

var_dump($array);
/*
[
    0 => [
        'field1' => 'A'
        'field2' => 'orange'
    ]
    1 => [
        'field1' => 'B'
        'field2' => 'peach'
    ]
    2 => [
        'field1' => 'C'
        'field2' => 'apple'
    ]
]
*/