Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用foreach洗牌数组中的答案?_Php_Arrays_Foreach_Shuffle - Fatal编程技术网

Php 如何使用foreach洗牌数组中的答案?

Php 如何使用foreach洗牌数组中的答案?,php,arrays,foreach,shuffle,Php,Arrays,Foreach,Shuffle,我正在做一个测验申请,目前有一个表格,格式如下: | id | question | option1 | option2 | option3 | answer | -------------------------------------------------------- | 1 | What is my name? | Dave | Bob | Charles | Linda | 我目前拥有此代码,该代码正确输出我表格中的所有信息: <?php /

我正在做一个测验申请,目前有一个表格,格式如下:

| id |     question     | option1 | option2 | option3 | answer |
--------------------------------------------------------
| 1  | What is my name? |  Dave   |   Bob   | Charles | Linda  |
我目前拥有此代码,该代码正确输出我表格中的所有信息:

<?php
//Connection code included above
$query="SELECT * FROM MatQuiz";                        

$result = mysql_query($query, $connect);

?>

<?php                                
    while($row = mysql_fetch_assoc($result)) {                                

       echo $row['id'] . '.  ';
       echo $row['question'] . '<br><br>';                           

?>

    <input type="radio" name="ID <?php $row['id']; ?>" value="<?php $row['option1']; ?>"><?php echo $row['option1'] ?><br>
    <input type="radio" name="ID <?php $row['id']; ?>" value="<?php $row['option2']; ?>"><?php echo $row['option2']; ?><br>
    <input type="radio" name="ID <?php $row['id']; ?>" value="<?php $row['option3']; ?>"><?php echo $row['option3']; ?><br>
    <input type="radio" name="ID <?php $row['id']; ?>" value="<?php $row['answer']; ?>"><?php echo $row['answer']; ?><br><br>

<?php

    }                            

?>
我知道我需要使用Foreach循环,将$row数组值分配给另一个数组并使用shuffle()函数。每当我这样做的时候,我都会遇到一个错误并说无效的参数


如何对答案的组织进行洗牌,使它们不会每次都以相同的顺序显示?

对于每个数据库行,创建一个$Options数组。将每行选项和答案添加到$Options数组中

然后使用shuffle($Options):

然后使用forloop表示$Option值

<?php                                
    while($row = mysql_fetch_assoc($result)) { 
        $Options = array($row['option1'], $row['option2'], $row['option3'], $row['answer']); 
        shuffle($Options);                        

        echo $row['id'] . '.  ';
        echo $row['question'] . '<br><br>';                           

        foreach($Options as $Option){?>
             <input type="radio" name="ID <?php echo $row['id']; ?>" value="<?php echo $Option; ?>"><?php echo $Option; ?><br>
       <?php }
    }
?>


为什么不能在
$row['option1']
之前直接使用
$row['option2']
?为每个数据库行创建一个$Options数组。将每行选项和答案添加到$Options数组中。然后使用shuffle($Options):。然后使用forloop表示$Option值sny,因为所有选项都会以相同的顺序出现,但首先启动选项2
我遇到一个错误,并说无效参数
显示该选项的代码并显示实际错误。这不应该被否决,因为它为这个问题提供了一个正确的解决方案。可能是因为对你所做的事情缺乏解释。很公平,我认为我之前对这个问题的评论就足够了。我会更新答案。谢谢你的提示。Justbaron,非常感谢你的帮助,对php还是相当陌生的,所以正确使用循环让我的头脑清醒了。你的答案很好,谢谢。
<?php                                
    while($row = mysql_fetch_assoc($result)) { 
        $Options = array($row['option1'], $row['option2'], $row['option3'], $row['answer']); 
        shuffle($Options);                        

        echo $row['id'] . '.  ';
        echo $row['question'] . '<br><br>';                           

        foreach($Options as $Option){?>
             <input type="radio" name="ID <?php echo $row['id']; ?>" value="<?php echo $Option; ?>"><?php echo $Option; ?><br>
       <?php }
    }
?>