一、问题描述
先抛出问题,有一个二维数组,有多个维度的字段,需要计算出各个维度单独的排名, 降序排列?
数据简化后如下:
// 示例数据生成 for ($i = 0; $i < 100; $i++) { $data = [ 'id' => $i, 'read_count' => mt_rand(100000, 999999), 'interactive_count' => mt_rand(10000, 99999), 'search_count' => mt_rand(1000, 9999), 'video_count' => mt_rand(100, 999), 'checkin_count' => mt_rand(100, 999), 'watch_count' => mt_rand(100, 999), 'score' => mt_rand(60, 90), 'play_status' => mt_rand(1, 2), ]; $datas[] = $data; } // 演示例数据 function getDemoData() { $datas = [ ['id' => 1,'score' => 10, 'read_count' => 1000, 'search_count' => 90], ['id' => 2,'score' => 80, 'read_count' => 300, 'search_count' => 490], ['id' => 3,'score' => 10, 'read_count' => 500, 'search_count' => 590], ]; return $datas; }
二、直接的解发
简单粗暴的办法,你必然能想到,如下:
算法:
0、定义一个排序类,每个维度定义一个排序方法
1、对每个维度分别排一次
2、分别记录每个维度的排名
继续阅读