Php 获取随机查询结果,然后对其进行排序

Php 获取随机查询结果,然后对其进行排序,php,pdo,Php,Pdo,我需要运行ORDER BY RAND查询,然后对结果数据集进行数字排序。换句话说,我想要一组随机的数据,在这个例子中是7个数字,但是我需要对这7个结果进行数字排序 此代码运行后: 我需要对7个结果进行排序 有什么想法吗 谢谢。简单到: SELECT `rand` FROM ( SELECT ... ORDER BY RAND() LIMIT 7 ) ORDER BY `rand` 并不是说ORDER BY RAND LIMIT 7是选择随机数据的一种相当低效的方法;更有效的方法将取决于

我需要运行ORDER BY RAND查询,然后对结果数据集进行数字排序。换句话说,我想要一组随机的数据,在这个例子中是7个数字,但是我需要对这7个结果进行数字排序

此代码运行后:

我需要对7个结果进行排序

有什么想法吗

谢谢。

简单到:

SELECT `rand`
FROM (
    SELECT ... ORDER BY RAND() LIMIT 7
)
ORDER BY `rand`

并不是说ORDER BY RAND LIMIT 7是选择随机数据的一种相当低效的方法;更有效的方法将取决于您的确切数据。搜索与此主题相关的许多问题。

我想这就是你的意思

$new = array();
foreach ($results as $result) {
    $new[] $result['rand'];
}

$sorted = ksort($new);

所以,你要做的是取1,7,3,4,2,5,6然后1-7点回来?你自己有没有试过?是的,我已经试了两天了。如果你尝试了一些东西,展示你所尝试的,并解释它以何种方式无法实现你想要的,这真的很有帮助。例如,给出您的代码、一些示例数据、期望的/预期的结果和不期望的/实际的结果。我试图查询一个500记录的mySQL数据库,以获得7个随机记录——碰巧是数字——然后我想对它们进行数字排序。最后,我想将排序后的数组导出为文本文件。原始查询(包括写入文本文件函数)的完整代码如下:如果$today==Oct 31{$dayList=halloween;$stmt=$pdo->querySELECT rand FROM jukebox2014,class='$dayList'ORDER BY rand LIMIT$LIMIT;}$fh=fopendataPDO.txt,w;而$row=$stmt->fetchObject{fwrite$fh,$row->rand.,;}fclose$fh;出口这不起作用,但也许我真的不理解你建议的语法。我想我应该把所有的代码和我的原始问题一起发布。这是包含您的建议的代码。如果$today==10月31日{$dayList=halloween;$stmt=$pdo->querySELECT rand FROM jukebox2014,其中class='$dayList'按兰德顺序限制$LIMIT ORDER按兰德顺序限制;}$fh=fopendataPDO.txt,w;而$row=$stmt->fetchObject{fwrite$fh,$row->rand.,;}fclose$fh;出口这成功了!我花了一段时间才弄明白正确的语法,但效果很好。我将很快研究兰德替代品。这是一个很好的资源,我感谢你的帮助。感谢你这么快提供的所有帮助,并为爱好者的无知道歉。我应该包括所有的代码。这是遗漏的东西。这是将希望排序的数组写入文本文件的代码。-$fh=fopendataPDO.txt,w;而$row=$stmt->fetchObject{fwrite$fh,$row->rand.,;}fclose$fh;出口
$new = array();
foreach ($results as $result) {
    $new[] $result['rand'];
}

$sorted = ksort($new);