在 PHP 中根据单个条件排序(如按分数升序或降序)很简单,使用 sort()
或 ksort()
都可以。如果需要实现多条件排序呢,我们可以通过内置函数 array_multisort()
来实现。
在游戏中有很多任务,每个任务有序号、任务名称、角色可接取的最低等级、前置任务 ID 等属性,现在需要按多个条件进行排序。首先,按角色可接取的最低等级排序,等级越低的越靠前;等级相同的情况下,再按序号排序,序号越低的越靠前;以此类推,最后按前置任务 ID 升序排序。
需要排序的数据如下:
$quests = [
[
'id' => 1,
'name' => '神圣的守护者',
'level' => 34,
'pre_id' => 38,
],
[
'id' => 2,
'name' => '天空之城开拓者',
'level' => 25,
'pre_id' => 367,
],
.
.
.
];
.
.
.
foreach ($quests as $key => $quest) {
$level[$key] = $quest['level'];
$id[$key] = $quest['id'];
$pre_id[$key] = $quest['pre_id'];
}
array_multisort($level, SORT_ASC, $id, SORT_ASC, $pre_id, SORT_ASC, $quests);
排序前:
排序后: