📅  最后修改于: 2023-12-03 15:33:32.415000             🧑  作者: Mango
函数介绍
Ds\Map
是 PHP 标准库中的一个类,用于表示一个键值对的集合。sorted()
是 Ds\Map
类中的一个方法,用于按照指定的排序规则对当前 Map 实例进行排序,并返回排序后的一个新 Map 实例。
该方法签名为 public function sorted(callable $comparator = null): \Ds\Map
。
其中 $comparator 参数是一个可选的回调函数,用于指定排序规则。如果省略,则默认按照键值对的 key 进行升序排序。
排序稳定性:不保证排序的稳定性。
函数参数
sorted()
函数有一个可选参数 $comparator,用于指定排序规则。
$comparator 参数是一个回调函数,形如:
function ($a, $b) : int {}
其中,
需要注意的是,$comparator 函数的返回值必须是整数类型。
该方法的默认排序规则是对键值对的 key 进行升序排序,即按字母表顺序排列。
函数返回值
sorted()
函数返回排序后的一个新 Map 实例。
public function sorted(callable $comparator = null): \Ds\Map
函数使用
使用 sorted()
函数,需要先创建一个 Ds\Map
类的实例,然后调用 sorted()
方法即可。
下面是一个示例代码:
<?php
// 创建一个 Map 实例
$map = new \Ds\Map();
$map->put('apple', 3);
$map->put('banana', 2);
$map->put('pear', 4);
$map->put('orange', 1);
// 对 Map 实例进行排序
$mapSorted = $map->sorted();
// 输出排序后的结果
foreach ($mapSorted as $key => $value) {
echo $key . ' => ' . $value . PHP_EOL;
}
输出结果为:
apple => 3
banana => 2
orange => 1
pear => 4
上述代码中,以升序方式排序了一个 Ds\Map
实例,然后通过 foreach
循环输出了排序后的结果。
使用 $comparator 参数自定义排序规则
除了默认的升序排序规则外,sorted()
函数还支持自定义排序规则。即可以通过 $comparator
参数传递一个回调函数来指定排序规则。
下面是一个示例代码:
<?php
// 创建一个 Map 实例
$map = new \Ds\Map();
$map->put('apple', 3);
$map->put('banana', 2);
$map->put('pear', 4);
$map->put('orange', 1);
// 自定义排序规则,按值进行降序排序
$comparator = function ($a, $b) use ($map) {
return $map->get($b) - $map->get($a);
};
// 对 Map 实例进行排序
$mapSorted = $map->sorted($comparator);
// 输出排序后的结果
foreach ($mapSorted as $key => $value) {
echo $key . ' => ' . $value . PHP_EOL;
}
输出结果为:
pear => 4
apple => 3
banana => 2
orange => 1
上述代码中,使用了 $comparator 参数自定义了排序规则。具体来说,$comparator 函数根据键值对的 value 进行降序排序。
总结
sorted()
是 Ds\Map 的一个实用方法,可以方便地对 Map 实例进行排序。只需要传递一个可选的 $comparator 参数,就可以支持自定义的排序规则。