Рандомизировать вывод - PullRequest
1 голос
/ 21 мая 2011

У меня есть страница, где я вывожу детали товара.Данные хранятся в БД, и я использую foreach, чтобы отобразить их на странице.В настоящее время элементы отображаются в порядке их хранения в моей таблице.Каков наилучший способ рандомизировать порядок отображения элементов на странице при каждой загрузке?

Ответы [ 3 ]

3 голосов
/ 21 мая 2011

bool shuffle (массив & $ массив )

Эта функция перемешивает (рандомизирует порядок элементов в) массив.
Возвращает ИСТИНА в случае успеха или ЛОЖЬ в случае неудачи.

Пример:

while ($row = mysql_fetch_row($result))
    {
    $set[] = $row;
    }

shuffle($set); // rows now in random order

foreach ($set as $row)
    {
    echo $row['column'];
    }
3 голосов
/ 21 мая 2011

В MySQL вы можете сделать ORDER BY RAND() LIMIT n

Но я могу работать медленно для больших таблиц, потому что перед возвращением лучших n результатов потребуется отсортировать всю таблицу целиком.

Добавление WHERE RAND() < 0.1 ускорит запрос, потому что ему нужно будет только отсортировать ~ 10% таблицы.

0 голосов
/ 21 мая 2011

Вместо того, чтобы повторять это сразу, я бы сохранял данные в массиве, а затем рандомизировал содержимое массива с помощью array_rand () .Со вторым аргументом этой функции вы можете указать, сколько элементов вы хотите выбрать случайным образом.

...