この記事は2年以上前の投稿になります。
記載された情報が古くなっている可能性がございますので十分ご注意ください。
記載された情報が古くなっている可能性がございますので十分ご注意ください。
PHP等でデータをランダムに表示させたいというケースがしばしばありますが、元データをデータベースから取得している場合では、取得するSQL文を変更してランダムにデータを取得する方がデータを取得後にプログラムで配列を乱数取得して表示させるより安全且つ高速です。
ここでは最近よく使われるMySQLを例にしていますが、PostgreSQLでも互換性のある記述です。
SELECT * FROM table_name ORDER BY RAND() LIMIT 20;
※レコード数が多いテーブルでは「SELECT *」のランダムは非常に遅くなりますので注意してください。(取得するカラムを指定しましょう)
ちなみに、元データがデータベースではないような場合は、PHP 配列で shuffle() を利用すれば良いかと思います。