【发布时间】:2014-03-18 08:05:12
【问题描述】:
我正在构建一个测验应用程序。很直接。只剩下最后一点,我被卡住了。我想随机化答案选项。检查查看代码中我在 CAPS 中遇到问题的注释。 Shuffle 正在工作,但它正在将 assoc 数组更改为数字 0 1 等。 array_rand 使 foreach 无法工作和 foreach 抛出错误。提供的参数无效。 不知道怎么回事,谁能帮帮我。。
<form action="<?php echo URL?>load=quiz&page=<?php echo $page; ?>" method="post" name="quiz">
<?php //var_dump($quiz_data);
$all_ans_opts = array();
$ans_opts = array_filter($all_ans_opts);;
?>
<?php foreach($quiz_data as $d):
$all_ans_opts['answer_a'] = $d['answer_a'];
$all_ans_opts['answer_b'] = $d['answer_b'];
$all_ans_opts['answer_c'] = $d['answer_c'];
$all_ans_opts['answer_d'] = $d['answer_d'];
$all_ans_opts['answer_e'] = $d['answer_e'];
?>
<!-- If the question type is MC show the radio form-->
<p>
Question <?php echo $d['question_number']; ?>: <?php echo $d['question_title'] ; ?>
</p>
<p>
<input type="hidden" name="page_num" value="<?php echo $page; ?>">
<input type="hidden" name="question_number" value="<?php echo $d['question_number']; ?>">
<input type="hidden" name="questionid" value="<?php echo $d['questionid']; ?>">
<input type="hidden" name="quiz_number" value="<?php echo $d['quiz_number']; ?>">
<?php
endforeach;
//var_dump($all_ans_opts);
?>
<?php
// HERE I AM TRYING TO RANDAMISE THE ARRAY ELEMENTS PRESERVING KEY VALUE PAIRS FOR FOREACH
// FOR RANDAMISATION IF I USE SHUFFLE IT WORKS BUT CHANGING THE KEY FROM ASSOCIATIVE TO //INDEX 0 1 ETC..
// IF I USE ARRAY_RAND FUNCTION FOREACH GIVES ERROR- nvalid argument supplied for foreach()
$ans_opts = array_filter($all_ans_opts);
shuffle($all_ans_opts);
//$ans_opts = array_rand($all_ans_opts);
?>
<?php foreach ($ans_opts as $key=>$val){ ?>
<input type="radio" name="<?php echo 'answer_selected';?>" value=<?php echo $key ?>><?php echo $val; ?><br/>
<?php } ?>
</p>
<input type="submit" name="prev" value="Previous Question" <?php if($page == 0) echo "disabled";?> />
<input type="submit" name="save" value="<?php if($page == $totalQuestion-1)echo 'Submit Quiz'; else{echo 'Save & Continue';} ?>" />
<input type="submit" name="next" value="Next Question" <?php if($page == $totalQuestion-1) echo "disabled";?> />
</form>
【问题讨论】:
-
@anurupr 所以没有可用的函数我们必须自己编写是吗?