我有一个数据库,里面有 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>
<input type="radio" name="q1" value="$obj["ch1"]"> $obj["ch1"]<br>
<input type="radio" name="q1" value="$obj["ch2"]"> $obj["ch2"]<br>
<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. ". $links[$rand_keys[0]] . "<br>";
echo "</td></tr><tr><td>";
echo "2. ".$links[$rand_keys[1]] . "<br>";
echo "</td></tr><tr><td>";
echo "3. ". $links[$rand_keys[2]] . "<br>";
echo "</td></tr><tr><td>";
}
它不起作用。代码有什么问题吗?请帮助我找到错误的方法使其工作或任何可以实现我的目的的方法。
好的,考虑到其他不重复的问题,我建议单独学习 php 的基础知识,并尝试迭代硬编码的嵌套数组以打印预期的输出。
所以问题中的代码存在一些问题:
- 它不会获取随机问题
- 它什么都不打印,只是向数组中添加 1 个长字符串
links
。请了解'
和"
之间的区别 - 没有循环来迭代答案,它根本不是有效的PHP代码
工作代码(再次考虑来自非重复问题的文档结构)可能如下所示:
foreach ($cursor as $obj) {
echo $obj["question"];
foreach($obj["answerswers"] as $key=>$answer) {
echo '<input type="radio" name="' . $key . '" value="'.$answer.'">';
}
}