1

我有一个获取 6 个结果的查询,然后我想随机化这 6 个结果,这样每当人们重新加载页面时,它们就会按顺序随机化。

在这 6 个结果中,我想在单独的框中显示一个而不是其他结果,我该怎么做?

这就是我的想法,得到结果,在数组上使用 shuffle() ,然后在我做的单独的盒子里echo array[0]['info'],然后剩下的我做 a$i = 2; while($i <= 6);和 echoarray[$i]['info'];

你怎么看?有没有更好的办法?

我需要此功能尽可能高效,因此任何提示都值得赞赏。单独的查询可能吗?

4

3 回答 3

7

您可以从 MySQL 中以随机顺序获取结果,而不是在 PHP 中对其进行随机化。

SELECT * FROM `table` ORDER BY RAND() LIMIT 6;

另见RAND()(下面的注释)

编辑:

要仅随机化最后 x 个条目,请参阅答案。

于 2012-07-04T06:22:19.327 回答
2

你可以用这个...

select * from (select * from table order by date desc limit 6) as t order by rand();
于 2012-07-04T06:24:34.970 回答
1
shuffle( $result );

foreach( $result as $key=>$value ):
    if( $key ):
       // get first item
       $firstOne = $value;
       continue;
    endif;
    // echo others
endforeach;

然后在单独的框中回显 $firstOne。

于 2012-07-04T06:31:22.357 回答