当前位置:首页 > PHP

php实现组合排序 代码实现

2026-03-13 02:23:05PHP

php实现组合排序 代码实现

php实现组合排序 代码实现

PHP实现组合排序代码示例

组合排序通常指对多维数组或多条件进行排序。以下是几种常见实现方式:

使用array_multisort函数

$data = [
    ['name' => 'John', 'age' => 25, 'score' => 80],
    ['name' => 'Alice', 'age' => 30, 'score' => 90],
    ['name' => 'Bob', 'age' => 25, 'score' => 85]
];

// 提取排序字段
$ages = array_column($data, 'age');
$scores = array_column($data, 'score');

// 先按age升序,再按score降序
array_multisort($ages, SORT_ASC, $scores, SORT_DESC, $data);

print_r($data);

使用usort自定义排序

$data = [
    ['name' => 'John', 'age' => 25, 'score' => 80],
    ['name' => 'Alice', 'age' => 30, 'score' => 90],
    ['name' => 'Bob', 'age' => 25, 'score' => 85]
];

usort($data, function($a, $b) {
    if ($a['age'] == $b['age']) {
        return $b['score'] - $a['score']; // score降序
    }
    return $a['age'] - $b['age']; // age升序
});

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', 25, 80),
    new User('Alice', 30, 90),
    new User('Bob', 25, 85)
];

usort($users, function($a, $b) {
    return [$a->age, $b->score] <=> [$b->age, $a->score];
});

foreach ($users as $user) {
    echo "{$user->name}, {$user->age}, {$user->score}\n";
}

多字段动态排序

function multiSort(array &$array, array $sortCriteria) {
    usort($array, function($a, $b) use ($sortCriteria) {
        foreach ($sortCriteria as $field => $order) {
            if ($a[$field] != $b[$field]) {
                return ($order === SORT_ASC) 
                    ? $a[$field] <=> $b[$field] 
                    : $b[$field] <=> $a[$field];
            }
        }
        return 0;
    });
}

$data = [
    ['name' => 'John', 'age' => 25, 'score' => 80],
    ['name' => 'Alice', 'age' => 30, 'score' => 90],
    ['name' => 'Bob', 'age' => 25, 'score' => 85]
];

multiSort($data, ['age' => SORT_ASC, 'score' => SORT_DESC]);
print_r($data);

以上示例展示了PHP中实现组合排序的多种方法,可根据实际需求选择合适的方式。array_multisort适合简单场景,usort提供更灵活的定制,而最后的多字段动态排序函数则提供了可配置的解决方案。

标签: 组合代码
分享给朋友:

相关文章

vue实现通讯录代码

vue实现通讯录代码

实现思路 Vue实现通讯录的核心在于数据管理和组件交互。通常需要包含联系人列表、搜索功能、分组索引以及添加/编辑功能。 基本结构 创建Vue组件时需包含以下部分: 数据模型:存储联系人…

vue实现代码

vue实现代码

以下是Vue实现常见功能的代码示例,涵盖基础语法、组件通信、状态管理等核心内容: 基础模板语法 <template> <div> <h1>{{ mes…

vue抽奖代码实现

vue抽奖代码实现

Vue 抽奖代码实现 基础抽奖组件结构 使用 Vue 3 的 Composition API 实现抽奖功能,核心包括转盘动画、奖品列表和抽奖逻辑。以下为组件基础结构: <templat…

vue代码核心实现

vue代码核心实现

Vue 核心实现原理 Vue.js 的核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是关键实现要点: 响应式系统 通过 Object.defineProperty(Vue 2)…

vue代码框实现

vue代码框实现

Vue 代码框实现方法 在 Vue 中实现代码框功能通常需要结合语法高亮库或 UI 组件库。以下是几种常见实现方式: 使用第三方库 Prism.js 安装 Prism.js 及相关依赖: npm…

vue实现sku组合

vue实现sku组合

Vue实现SKU组合的方法 SKU(Stock Keeping Unit)是商品库存管理的基本单位,通常由多个属性组合而成。在电商系统中,实现SKU组合可以帮助用户选择商品的不同属性组合,并实时显示库…