从数据库中选择后,从数组中选择一个随机值

时间:2013-06-11 19:26:08

标签: php sql arrays random

我正在尝试从数据库中填充数据的数组中获取随机值。我正在从数据库中选择一些产品并将它们显示在首页上,但每次重新加载页面时我都需要显示不同的(随机)产品。

$row = mysql_query("SELECT * FROM anunt WHERE lichidareStoc = 0 ORDER BY anuntID DESC") or die(mysql_error());
$row2 = mysql_fetch_assoc($row);

所以,我认为$ row2现在是一个数组,并且拥有我之前从数据库中选择的所有信息。如何从该阵列中选择一个随机的“行”?

由于

3 个答案:

答案 0 :(得分:2)

您正在寻找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_ *。

答案 1 :(得分:0)

如果要选择随机条目,可以执行以下操作:

$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)];

如果你想要一个该条目的随机字段,你应该像Bernhard Poiss指出的那样使用array_rand

$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)];

答案 2 :(得分:0)

首先,您需要填充结果数组

$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)];