1

私は6つの結果を取得するクエリを持っています.6つの結果をランダム化したいので、人がページをリロードするたびに順番にランダム化されます.

これらの 6 つの結果のうち、1 つを他のボックスとは別のボックスに表示したいのですが、どうすればよいですか?

これは私が考えていたもので、結果を取得し、配列で shuffle() を使用し、次に別のボックスで実行しecho array[0]['info']、残りを実行し$i = 2; while($i <= 6);てエコーしますarray[$i]['info'];

どう思いますか?より良い方法はありますか?

この機能をできるだけ効率的にする必要があるため、ヒントをいただければ幸いです。別々のクエリでしょうか?

4

3 に答える 3

7

PHPでランダム化する代わりに、MySQLからランダム化された順序で結果を取得できます。

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 に答える