我对数据随机化有一点问题。我目前正在制作一个在线考试系统,其中问题的顺序将是随机的,答案的顺序也将是随机的。但是现在我只能使用“随机排序”的Sql查询来随机化问题。但是对于答案的选择,我仍然无法将其随机化,有什么可以帮助我的吗?
my script
$html .= $d->soal.'<br>'.$tampil_media.'<div class="funkyradio">';
for ($j = 0; $j < $this->config->item('jml_opsi'); $j++) {
$opsi = "opsi_".$this->opsi[$j];
$checked = $arr_jawab[$d->id]["j"] == strtoupper($this->opsi[$j]) ? "checked" : "";
$pc_pilihan_opsi = explode("#####", $d->$opsi);
$tampil_media_opsi = (is_file('./upload/gambar_soal/'.$pc_pilihan_opsi[0]) || $pc_pilihan_opsi[0] != "") ? tampil_media('./upload/gambar_opsi/'.$pc_pilihan_opsi[0],'auto','auto') : '';
$pilihan_opsi = empty($pc_pilihan_opsi[1]) ? "-" : $pc_pilihan_opsi[1];
$html .=
'<div class="funkyradio-success" onclick="return simpan_sementara();">
<fieldset class="radio">
<span class="text-primary">'.$this->opsi[$j].'.</span>
<input type="radio" id="opsi_'.strtoupper($this->opsi[$j]).'_'.$d->id.'" name="opsi_'.$no.'" value="'.strtoupper($this->opsi[$j]).'" '.$checked.'>
<label for="opsi_'.strtoupper($this->opsi[$j]).'_'.$d->id.'">'.$pilihan_opsi.$tampil_media_opsi.'</label>
</fieldset>
</div>';
}
$html .= '</div></div>';
$no++;
答案 0 :(得分:1)
由于答案似乎是按数字索引的,因此您可以通过创建索引值数组并对其进行混排,然后循环遍历这些值来对它们进行随机化处理。因此,请替换以下for
语句:
for ($j = 0; $j < $this->config->item('jml_opsi'); $j++) {
具有:
$indexes = range(0, $this->config->item('jml_opsi') - 1);
shuffle($indexes);
foreach ($indexes as $j) {
Here's a demo上3v4l.org上的改组代码的结果。