我正在寻找有人帮助我解决这个问题:
我们有一个充满用户排名的数据库,这些数据被提取并放入表格中,如下所示(无法发布图像):
姓名: | 排名: | 索赔: | 最后出现: |
---|---|---|---|
测试1 | 管理员 | 111 | 现在活跃 |
测试2 | 主持人 | 213 | 现在活跃 |
测试3 | 高级管理员 | 123 | 现在活跃 |
我们基本上希望对“排名”列进行排序,以便“高级管理员”排在第一位,“管理员”排在第二位,“主持人”排在最后。
我花了几个小时寻找通过 sql 排序、php 数组排序、javascript 排序等对表进行排序的方法,但找不到任何不按字母顺序排序的内容。
非常感谢任何帮助!
您可以使用 SQL 按照您想要的方式对其进行排序。我不知道你的 SQL 表的结构 - 所以我猜测 - 这是使用 MySQL 的示例:
SELECT * FROM users
ORDER BY FIND_IN_SET(rank, 'Senior Admin,Admin,Moderator');
PHP 提供了一个名为
usort
的自定义排序函数。请参阅此处了解文档。
它允许您使用自定义比较函数来比较两个对象。 W3Schools 有一个很好的教程,介绍如何开始制作自己的比较函数。
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");
来应用排序
也许你应该考虑这个 JQuery 插件。它更容易集成,你可以用它做很多事情。 :)
http://datatables.net/index - 数据表。