【发布时间】:2011-05-21 19:11:08
【问题描述】:
我有一个输出项目详细信息的页面。数据存储在 db 中,我使用 foreach 在页面上回显它。目前,这些项目按照它们存储在我的表中的顺序显示。每次加载时随机化页面上显示的项目顺序的最佳方法是什么?
【问题讨论】:
我有一个输出项目详细信息的页面。数据存储在 db 中,我使用 foreach 在页面上回显它。目前,这些项目按照它们存储在我的表中的顺序显示。每次加载时随机化页面上显示的项目顺序的最佳方法是什么?
【问题讨论】:
bool shuffle ( array &$array )
此函数对数组进行打乱(随机排列元素的顺序)。
成功返回 TRUE,失败返回 FALSE。
例子:
while ($row = mysql_fetch_row($result))
{
$set[] = $row;
}
shuffle($set); // rows now in random order
foreach ($set as $row)
{
echo $row['column'];
}
【讨论】:
在 MySQL 中,您可以执行 ORDER BY RAND() LIMIT n
但是对于大型表,我可能会变慢,因为它需要在返回前 n 个结果之前对整个表进行排序。
添加WHERE RAND() < 0.1 将加快查询速度,因为它只需要对大约 10% 的表进行排序。
【讨论】:
foreaches 他们,因此他们必须已经在一个数组中。
我不会立即回显它,而是将数据存储在一个数组中,然后使用array_rand() 随机化数组的内容。使用此函数的第二个参数,您可以指定要随机选择的项目数。
【讨论】: