我正在找人帮我解决这个问题:
我们有一个填充了用户排名的数据库,这些数据被拉出并放入一个表中(不能发布图像):
| Name: | Rank: | Claims: | Last Seen: |
| Test1 | Admin | 111 | Active Now |
| Test2 | Moderator | 213 | Active Now |
| Test3 | Senior Admin | 123 | Active Now |
我们基本上希望对“排名”列进行排序,以便“高级管理员”排在第一位,“管理员”排在第二位,“主持人”排在最后。
我花了几个小时通过sql排序,php数组排序,javascript排序等方式查找排序表的方法,但无法找到任何不按字母顺序排序的内容。
非常感谢任何帮助!
答案 0 :(得分:1)
您可以使用SQL按照您希望的方式对其进行排序。我不知道你的SQL表的结构 - 所以我猜 - 这是使用MySQL的例子:
SELECT * FROM users
ORDER BY FIND_IN_SET(rank, 'Senior Admin,Admin,Moderator');
答案 1 :(得分:0)
PHP提供了一个名为usort
的自定义排序函数。有关文档,请参阅here。
它允许您使用自定义比较功能比较两个对象。 W3Schools has a good tutorial关于如何开始制作自己的比较功能。
usort
函数有两个参数:您要排序的数组和自定义比较函数。例如,如果您有一个名为$results
的结果数组,则可以像这样定义比较函数:
function my_compare($person1, $person2) {
if($person["rank"] == $person2["rank"]) {
return 0;
}
elseif($person1["rank"] == "Senior Admin") { // Senior admin will always be at the top
return -1;
}
elseif($person2["rank"] == "Senior Admin") {
return 1;
}
elseif($person1["rank"] == "Admin" && $person2["rank"] == "Moderator") {
return -1;
}
elseif($person1["rank"] == "Moderator" && $person2["rank"] == "Admin") {
return 1;
}
else {
return 0;
}
}
然后,您可以通过调用usort($results, "my_compare");
答案 2 :(得分:0)
答案 3 :(得分:-1)
也许你应该考虑这个JQuery插件。它更容易集成,你可以做很多事情。 :)
http://datatables.net/index - 数据表。