排行榜算法

顺序排行榜计算函数

不含名次, 顺序排列, 相同分数根据时间最早的排在前面

/**
 * 排行榜数据计算
 * 
 * @param array $list 欲排序数据
 * @param string $scoreKey 分数属性名
 * @param string $timeKey 时间属性名 (值为时间戳)
 * @return array 返回排序后的数据, 只有顺序, 没有名次
 */
function rank(array $list, string $scoreKey, string $timeKey): array 
{
    $times = [];
    $scores = [];
    foreach ($list as $key => $item) {
        $times[$key] = $item[$timeKey];
        $scores[$key] = $item[$scoreKey];
    }

    array_multisort($scores, SORT_DESC, $times, SORT_ASC, $list);
    return $list;
}
Last Updated:
Contributors: 余小波