php - 对查询结果进行随机但有一定规则的排序(usort)

标签 php mysql arrays sorting usort

作为 mysql 查询的结果,我得到了一个房间数组 ( mysql_fetch_assoc() )。我想“随机”地排序这个数组,但有一个规则。每个房间号不能比下一个房间号高或低超过 2 个。

现在我认为我应该使用 usort 来执行此操作,但我似乎无法弄清楚。我已经查看了 usort 的一些问题和解释,但我根本无法理解。我确信这不会像我目前遇到的那么困难......

这就是我现在正在尝试的。

shuffle($room_array);

function cmp($a, $b){
    if ($a["room"] == $b["room"] || $a["room"]+2 == $b["room"]|| $a["room"]+1 == $b["room"]|| $a["room"]-2 == $b["room"]|| $a["room"]-1 == $b["room"]){
   return 1;
   }else return 0;
}

usort($room_array, "cmp");

非常感谢!

最佳答案

试试这个:

function cmp ($a, $b){
    return $b - $a; 
}
usort($room_array, 'cmp');

关于php - 对查询结果进行随机但有一定规则的排序(usort),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26981160/

相关文章:

php - 像这样写这个MySQL函数会输出什么?

mysql - 通过 SSH 隧道的 Flyway

php - PHP/MySQL自动对付垃圾邮件发送者有哪些方法

javascript - c9 - 如何从脚本标签运行 php 函数?

php - xpath查询中如何使用多个条件?

ruby - 如何查找并返回数组中的重复值

一次性更改数组不同索引处的值

php - 通过 js 框架组织 JQuery 片段

mysql - 获取一列的不同值

java - 从二维数组返回特定​​值