【问题标题】: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)];
      

      【讨论】:

        猜你喜欢
        • 2012-02-21
        • 1970-01-01
        • 2017-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多