【问题标题】:Select a random value from an array after a selection from database从数据库中选择后从数组中选择一个随机值
【发布时间】:2013-06-11 19:26:08
【问题描述】:
我正在尝试从一个填充了数据库数据的数组中获取一个随机值。我正在从数据库中选择一些产品并将它们显示在首页上,但每次重新加载页面时我都需要显示不同的(随机)产品。
$row = mysql_query("SELECT * FROM anunt WHERE lichidareStoc = 0 ORDER BY anuntID DESC") or die(mysql_error());
$row2 = mysql_fetch_assoc($row);
所以,我认为 $row2 现在是一个数组,并且包含我之前从数据库中选择的所有信息。我现在如何从该数组中选择一个随机“行”?
谢谢
【问题讨论】:
标签:
php
sql
arrays
random
【解决方案1】:
您正在寻找array_rand,请参阅:http://php.net/manual/en/function.array-rand.php
例子:
$rand_key = array_rand($row2);
echo $row2[$rand_key]; // your random
您也可以直接从数据库中随机选择一行:
SELECT *
FROM anunt
WHERE lichidareStoc = 0
ORDER BY rand()
LIMIT 1
但请注意,这会降低您的性能,尤其是在较大的桌子上。
旁注:mysql_* 函数已弃用,请改用mysqli_*。
【解决方案2】:
如果你想随机选择一个条目,你可以这样做:
$myRows=array();
$row = mysql_query("SELECT * FROM anunt WHERE lichidareStoc = 0 ORDER BY anuntID DESC") or die(mysql_error());
while($row2 = mysql_fetch_assoc($row))
$myRows[]=$row2;
$randomEntry=$myRows[array_rand($myRows)];
如果您想要该条目的随机字段,您应该使用 array_rand,就像 Bernhard Poiss 指出的那样。
$row = mysql_query("SELECT * FROM anunt WHERE lichidareStoc = 0 ORDER BY anuntID DESC") or die(mysql_error());
$row2 = mysql_fetch_assoc($row);
$randomField=$row2[array_rand($row2)];
【解决方案3】:
您首先要填充结果数组
$row = mysql_query("SELECT * FROM anunt WHERE lichidareStoc = 0 ORDER BY anuntID DESC") or die(mysql_error());
$rows = array();
while($rec = mysql_fetch_assoc($row)){
$rows[] = $rec;
}
然后你可以使用array_rand随机选择一个项目
$random = $rows[array_rand($rows)];