排行榜算法
顺序排行榜计算函数
不含名次, 顺序排列, 相同分数根据时间最早的排在前面
/**
* 排行榜数据计算
*
* @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;
}