当前位置:首页 > PHP

php实现组合排序 代码实现

2026-03-13 02:23:05PHP

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.js 管理后台实现方案 使用 Vue.js 构建管理后台系统通常涉及路由、状态管理、UI 组件库等核心模块。以下是关键实现方案: 基础框架搭建 安装 Vue CLI 创建项目: npm i…

vue代码抛硬币实现

vue代码抛硬币实现

实现思路 使用Vue.js实现抛硬币功能,可以通过随机生成0或1来模拟硬币的正反面,并通过动画效果增强用户体验。以下是具体实现步骤。 代码实现 创建一个Vue组件,包含一个按钮用于触发抛硬币动作…

vue实现左右滑动代码

vue实现左右滑动代码

以下是一个基于 Vue 3 实现左右滑动功能的代码示例,结合手势识别和动画效果: 基础实现(使用 CSS 和事件监听) <template> <div class="slide…

vue长轮询代码实现

vue长轮询代码实现

Vue 长轮询实现方法 长轮询(Long Polling)是一种服务器推送技术,客户端发送请求后,服务器保持连接开放直到有新数据或超时。以下是 Vue 中实现长轮询的代码示例。 基本实现逻辑 定义一…

vue代码实现清除缓存

vue代码实现清除缓存

清除浏览器缓存的方法 在Vue项目中清除缓存通常涉及版本控制、强制刷新或服务端配置。以下是几种常见实现方式: 修改文件名添加哈希 通过webpack配置在打包时为静态文件添加哈希值,确保每次更新后文…

vue联动实现代码

vue联动实现代码

Vue 联动实现代码 Vue 中实现联动效果通常涉及父子组件通信、状态管理或动态数据绑定。以下是几种常见的联动实现方式: 父子组件通信实现联动 通过 props 和 $emit 实现父子组件数据联动…