php实现组合排序 代码实现

PHP实现组合排序代码
组合排序通常指按照多个字段或条件对数据进行排序。以下是几种常见的PHP实现方式:
使用usort自定义排序函数
$data = [
['name' => 'John', 'age' => 28, 'score' => 85],
['name' => 'Alice', 'age' => 25, 'score' => 92],
['name' => 'Bob', 'age' => 25, 'score' => 80]
];
usort($data, function($a, $b) {
// 先按age升序,再按score降序
if ($a['age'] != $b['age']) {
return $a['age'] - $b['age'];
}
return $b['score'] - $a['score'];
});
print_r($data);
使用array_multisort实现多列排序
$names = array_column($data, 'name');
$ages = array_column($data, 'age');
$scores = array_column($data, 'score');
// 先按age升序,再按score降序
array_multisort(
$ages, SORT_ASC,
$scores, SORT_DESC,
$data
);
print_r($data);
对象集合的排序
class User {
public $name;
public $age;
public $score;
public function __construct($name, $age, $score) {
$this->name = $name;
$this->age = $age;
$this->score = $score;
}
}
$users = [
new User('John', 28, 85),
new User('Alice', 25, 92),
new User('Bob', 25, 80)
];
usort($users, function($a, $b) {
if ($a->age != $b->age) {
return $a->age <=> $b->age;
}
return $b->score <=> $a->score;
});
print_r($users);
使用太空船操作符(PHP 7+)
usort($data, function($a, $b) {
return [$a['age'], $b['score']] <=> [$b['age'], $a['score']];
});
这些方法可以根据实际需求调整排序字段和顺序。对于大型数据集,array_multisort通常性能更好,而usort提供更灵活的排序逻辑控制。







