如何使用 foreach 随机排列数组中的答案?
How to shuffle the answers in my array using a foreach?
我正在制作一个测验应用程序,目前有一个 table 格式如下:
| id | question | option1 | option2 | option3 | answer |
--------------------------------------------------------
| 1 | What is my name? | Dave | Bob | Charles | Linda |
我目前有这段代码,它可以正确输出我 table 中的所有信息:
<?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
}
?>
此代码以正确的顺序在我的数据库 table 中输出我的所有问题,以及相关的单选按钮和答案。
我想做的是洗牌组织:
$row['option1'];
$row['option2'];
$row['option3'];
$row['answer'];
我知道我需要使用 Foreach 循环,并将 $row 数组值分配给另一个数组并使用 shuffle() 函数。每当我这样做时,我都会遇到错误并提示参数无效。
我该如何打乱答案的组织结构,使它们每次都不会以相同的顺序显示?
为每个数据库行创建一个 $Options 数组。将每行选项和答案添加到 $Options 数组。
然后使用 shuffle($Options): PHP Shuffle
然后使用 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 }
}
?>
我正在制作一个测验应用程序,目前有一个 table 格式如下:
| id | question | option1 | option2 | option3 | answer |
--------------------------------------------------------
| 1 | What is my name? | Dave | Bob | Charles | Linda |
我目前有这段代码,它可以正确输出我 table 中的所有信息:
<?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
}
?>
此代码以正确的顺序在我的数据库 table 中输出我的所有问题,以及相关的单选按钮和答案。
我想做的是洗牌组织:
$row['option1'];
$row['option2'];
$row['option3'];
$row['answer'];
我知道我需要使用 Foreach 循环,并将 $row 数组值分配给另一个数组并使用 shuffle() 函数。每当我这样做时,我都会遇到错误并提示参数无效。
我该如何打乱答案的组织结构,使它们每次都不会以相同的顺序显示?
为每个数据库行创建一个 $Options 数组。将每行选项和答案添加到 $Options 数组。
然后使用 shuffle($Options): PHP Shuffle
然后使用 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 }
}
?>