--获取排行榜
function RankingFans(addData)
--局部方法
local function sort(a, b)
return a.num > b.num
end
local tab2 = {}; --排行局部表
local today = "2022-12-23"; --os.date("%Y-%m-%d", os.time()); --取当天时间(方便演示,使用时请使用此段)
if addData and "table" == type(addData) then
--遍历
for i, j in pairs(addData) do
if addData[i] and addData[i][today] then --取今日键值
local src = addData[i][today];
local pre_rankingData = {
num = src.num;
uid = src._k_;
};
table.insert(tab2, pre_rankingData);
else
return "error:RankingFans[mysql key null]!";
end
end
--调局部方法进行排行
table.sort(tab2, sort);
--取前5名
local str = "";
local rankStr = "[第%s名:%s 挑战次数:%s次]\n";
local DayTitle = "【%s榜单】\n";
for i = 1, 5 do
if tab2[i] and tab2[i].num then
str = str .. string.format(rankStr, i, tab2[i].uid, tab2[i].num);
else
break
return "没有人上榜!";
end
end
return string.format(DayTitle, today) .. str;
else
return "error:RankingFans[addData null]!";
end
end
--实例排行数据
local demo_data = {
["1000"] = {
["2022-12-23"] = { --当日时间
[1] = {
["addData"] = {
[1] = {
["title"] = "周末挑战",
["credit"] = "10",
},
},
},
["num"] = 1, --挑战总次数
["_k_"] = "1000",
},
},
["1002"] = {
["2022-12-23"] = {
[1] = {
["addData"] = {
[1] = {
["title"] = "周末挑战",
["score"] = "20",
},
[2] = {
["title"] = "周末挑战",
["score"] = "21",
},
},
},
["num"] = 2, --挑战总次数
["_k_"] = "1002";
},
}
}
print(RankingFans(demo_data))
以上就是lua实现排行榜功能,感谢!