Php 随机化数据集的最快方法是什么?

Php 随机化数据集的最快方法是什么?,php,Php,对于多项选择题测验应用程序,我想用正确答案显示虚拟答案。但正确答案在每个不同的问题上处于不同的位置 这是我尝试过的,但似乎不起作用: if ($question->type == 1) { echo "<div id='dummy_answers'>"; //Show Dummy echo '<h3>Dummy Answers</h3

对于多项选择题测验应用程序,我想用正确答案显示虚拟答案。但正确答案在每个不同的问题上处于不同的位置

这是我尝试过的,但似乎不起作用:

if ($question->type == 1)
            {   

                echo "<div id='dummy_answers'>";
                //Show Dummy
                echo '<h3>Dummy Answers</h3>';
                //Get Dummy Answers
                $query = $this->test_model->getDummyAnswers($question->id);
                $dummy_num = 1;
                foreach ($query->result() as $row)
                {
                    $rand_number = rand(1, 3);
                    if ($dummy_num == $rand_number)
                    {
                        $dummy_num = $rand_number + 2;
                        echo '<h4>Answer '.$dummy_num.'</h4>';
                        echo '<p>';
                        echo $row->option;
                        echo '</p>';
                        //Now echo the real answer
                        echo '<h4>Answer '.$rand_number.'</h4>';
                        echo '<p>';
                        echo $row->option;
                        echo '</p>'; //Get id's for each.echo $row->id;         
                    }
                    else
                    {
                        echo '<h4>Answer '.$dummy_num.'</h4>';
                        echo '<p>';
                        echo $row->option;
                        echo '</p>';
                        $dummy_num++;
                    }
                }
                echo '</div>';
                echo '  <hr/>';
            }
        ?>
if($question->type==1)
{   
回声“;
//表演假人
回应“虚假回答”;
//得到虚假的答案
$query=$this->test\u model->getDummyAnswers($question->id);
$dummy_num=1;
foreach($query->result()作为$row)
{
$rand_number=rand(1,3);
如果($dummy\u num==$rand\u number)
{
$dummy_num=$rand_number+2;
回显“应答”。$dummy_num.”;
回声“”;
echo$row->option;
回声“

”; //现在回应真正的答案 回显“回答”。$rand_编号。“; 回声“”; echo$row->option; echo“

”;//获取每个行的id。echo$row->id; } 其他的 { 回显“应答”。$dummy_num.”; 回声“”; echo$row->option; 回声“

”; $dummy_num++; } } 回声'; 回声“
”; } ?>
将答案放在一个数组中以供使用


您可以将结果放入一个数组(1个正确,3个不正确),然后
洗牌
,然后输出它们

$answers = array();

array_push($answers, "answer1");
array_push($answers, "answer2");
array_push($answers, "answer3");
array_push($answers, "answer4");

shuffle($answers);

foreach ($answers as $answer) {
    echo $answer;
}

你所需要做的就是把答案的键放在一个数组中,然后调用。大概是这样的:

$keys = array_keys($answers);
shuffle($keys);
for ($key in $keys) {
   echo $answers[$key];
}

我建议将所有答案放入一个数组中,然后使用
shuffle()
函数将它们随机排列。洗牌后,只需使用循环迭代数组并构建标记。

您应该使用。 在您的情况下,它将是:

if ($question->type == 1)
  { 
    echo "<div id='dummy_answers'>";
    //Show Dummy
    echo '<h3>Dummy Answers</h3>';
    //Get Dummy Answers
    $query = $this->test_model->getDummyAnswers($question->id);
    $answers=$query->result();
    shuffle($answers);
    foreach ($answers as $nr=>$row)
    {
        echo '<h4>Answer '.($nr+1).'</h4>';
        echo '<p>';
        echo $row->option;
        echo '</p>';
    }
    echo '</div>';
    echo '  <hr/>';
  }
?>
if($question->type==1)
{ 
回声“;
//表演假人
回应“虚假回答”;
//得到虚假的答案
$query=$this->test\u model->getDummyAnswers($question->id);
$answers=$query->result();
洗牌(答案);
foreach($nr=>$row)
{
回应“回答”。($nr+1)。”;
回声“”;
echo$row->option;
回声“

”; } 回声'; 回声“
”; } ?>
我说“最快”,意思是“最好”。:)。,寻找最好的方式做事总是最好的。事实上,如果你开始寻找做事情的“最佳”方式,你实际上不会做任何事情——你会把所有的时间都浪费在寻找做事情的最佳方式上。事实上,最好的方法就是只为某些原因寻找一些东西。相反,从长远来看,寻找最好的方法既能节省时间,又能提高生产率。i、 e.使用版本控制(“最佳”方式)与不使用版本控制。。
if ($question->type == 1)
  { 
    echo "<div id='dummy_answers'>";
    //Show Dummy
    echo '<h3>Dummy Answers</h3>';
    //Get Dummy Answers
    $query = $this->test_model->getDummyAnswers($question->id);
    $answers=$query->result();
    shuffle($answers);
    foreach ($answers as $nr=>$row)
    {
        echo '<h4>Answer '.($nr+1).'</h4>';
        echo '<p>';
        echo $row->option;
        echo '</p>';
    }
    echo '</div>';
    echo '  <hr/>';
  }
?>