如何在数组中获取随机元素以及如何从MySQL中获取随机行?

3

我被要求提供与用户拥有的项目相关的内容。因此,在创建数据库时,该items表存储了类别名称,所以我考虑获取类别名称并将其保存到一个数组中。

然后进行for循环并从中获取一个随机值。

之后从mysql数据库中获取一个随机行,所以有人知道如何做到这一点吗?

换句话说,我想知道如何从数组中获取随机值并从mysql中获取随机行。

提前致谢。

3个回答

3

4
要从一个数组中随机选择一行,你可以使用 ORDER BY RAND() LIMIT 1 - Not_a_Golfer
@Not_a_Golfer 非常感谢您告诉我关于LIMIT 1部分的信息,您真是救了我的一天。 - Mohamed Hassan
@MohamedHassan 我正在等待您的回答。 - sujal
我可以问一下它返回一行还是一个数字吗? - Mohamed Hassan
对不起,伙计们,一开始我搞错了,然后我编辑了一下,结果就奇妙地成功了。 - Mohamed Hassan
显示剩余3条评论

2
在PHP中从数组获取随机元素可以使用array_rand
要从MySQL查询中获取随机行,可以使用RAND(),类似于:
ORDER BY RAND() LIMIT 1

但是请注意,在MySQL中使用这种方法可能会影响性能。

你指的是什么影响?你认为有更好的方法吗? - Mohamed Hassan
@MohamedHassan 如果你的表格变得很大,性能可能会下降:http://www.titov.net/2005/09/21/do-not-use-order-by-rand-or-how-to-get-random-rows-from-table/ 在小表格上,这不是一个问题,但如果你的表格有任何增长的可能性,那么你可能需要从一开始就考虑其他替代方案。 - liquorvicar

0

来自http://php.net/manual/de/function.rand.php的引用:

ilya dot iz at i dot ua 27-Jul-2011 08:09 我不得不想出一个快速从表中获取随机行的方法,于是想到了以下方法:...

使用类似rand(0,count(arrayvar))的方式应该很容易从数组中获取随机值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接