获取mysql结果,然后随机化结果顺序,然后以不同的方式显示结果

时间:2012-07-04 06:14:38

标签: php mysql random

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

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

这就是我的想法,得到结果,在数组上使用shuffle(),然后在单独的框中我echo array[0]['info'],然后其余的我做$i = 2; while($i <= 6);并回显{{1 }}

你怎么看?有更好的方法吗?

我需要这个功能尽可能高效,所以任何提示都值得赞赏。可以单独查询?

3 个答案:

答案 0 :(得分:7)

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

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

另见RAND()(以下注释)

修改

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

答案 1 :(得分:2)

你可以用这个......

select * from (select * from table order by date desc limit 6) as t order by rand();

答案 2 :(得分:1)

shuffle( $result );

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

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