随机化输出


Randomize output

我有一个页面,我可以在其中输出项目详细信息。数据存储在 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% 进行排序。

我不会立即回显它,而是将数据存储在一个数组中,然后使用 array_rand() 随机化数组的内容。使用此函数的第二个参数,您可以指定要随机选择的项目数。