使用PHP和MongoDB获取随机记录并以特定格式显示

使用PHP和MongoDB获取随机记录并以特定格式显示,php,mongodb,random,Php,Mongodb,Random,我有一个数据库,有100个问题和多个答案。我想以测验的形式显示,每次随机选择20个问题。我在下面做过类似的事情 $m=new MongoClient(); $db=$m->mydb; $c=$db->quiz; $cursor = $c->find() $n = 20; foreach ($cursor as $obj) { $links=array('$obj["question"]<br&

我有一个数据库,有100个问题和多个答案。我想以测验的形式显示,每次随机选择20个问题。我在下面做过类似的事情

$m=new MongoClient(); 
  $db=$m->mydb; 
  $c=$db->quiz; 
 $cursor = $c->find()
      $n = 20;
            foreach ($cursor as $obj) { 
             $links=array('$obj["question"]<br><br> &nbsp;&nbsp;&nbsp;&nbsp;
                                                    <input type="radio" name="q1" value="$obj["ch1"]"> $obj["ch1"]<br>&nbsp;&nbsp;&nbsp;&nbsp;
                                                    <input type="radio" name="q1" value="$obj["ch2"]"> $obj["ch2"]<br>&nbsp;&nbsp;&nbsp;&nbsp; 
                                                  <input type="radio" name="q1" value="$obj[ch3"]"> $obj["ch3"]</p>');

    $rand_keys = array_rand($links, $n);
    echo "<center>". "<br><table><tr><td>";

    echo "1.&nbsp;&nbsp;". $links[$rand_keys[0]] . "<br>";
    echo "</td></tr><tr><td>";
    echo "2.&nbsp;&nbsp;".$links[$rand_keys[1]] . "<br>";
    echo "</td></tr><tr><td>";
    echo "3.&nbsp;&nbsp;". $links[$rand_keys[2]] . "<br>";
    echo "</td></tr><tr><td>";


    }
$m=newmongoclient();
$db=$m->mydb;
$c=$db->测验;
$cursor=$c->find()
$n=20;
foreach($cursor作为$obj){
$links=数组('$obj[“问题”]

$obj[“ch1”]
$obj[“ch2”]
好的,考虑到其他不重复的问题,我建议您单独学习php的基础知识,并尝试迭代硬编码的嵌套数组以打印预期的输出

因此,问题中的代码存在一些问题:

  • 它不会引出随机问题
  • 它不打印任何内容,只向
    链接
    数组添加一个长字符串。请学习
  • 没有迭代答案的循环,它根本不是有效的php代码
工作代码(再次考虑文档结构)可能如下所示:

foreach ($cursor as $obj) { 
    echo $obj["question"];
    foreach($obj["answers"] as $key=>$answer) {
        echo '<input type="radio" name="' . $key . '" value="'.$answer.'">';
    }
}
foreach($cursor作为$obj){
echo$obj[“问题”];
foreach($obj[“answers”]作为$key=>$answer){
回声';
}
}

可能重复的@AlexBlex我不确定它是否重复。@Puneeth,您使用哪个版本的MongoDB?@ConstantinGuay,2.6.11。@Puneeth ok,所以您不能使用MongoDB 3.2的新功能。在没有PHP的情况下,从数据库中获取随机值的方法是添加随机项。您可以添加一个字段
'random'=>rand(110000)
(取决于您将拥有的文档数量)然后,在你的查询中,你也要求一个随机值。我已经编辑了随机打印的代码。现在你能给我一些有用的答案吗?请记住这项工作没有for循环。可以做些什么使它工作。没有Puneeth。显然我不能。我放弃了。如果是这样,为什么这项工作不起作用。echo“”;请记住没有嵌套记录,因此,访问obj[ch1]。