我需要获取测验游戏的结果。
Expected Output:将结果提取到动态数组。
问题:我可以通过STATIC获取结果。但是没有人愿意输入50行代码。所以问题是,请查看我的控制器代码。在这里您可以看到ques1
等,因此您不想输入最多ques50
的数字吗?
$this->data['checks'] = array(
'ques1' => $this->input->post('quizId1'),
'ques2' => $this->input->post('quizId2'),
'ques3' => $this->input->post('quizId3'),
'ques4' => $this->input->post('quizId4'),
'ques5' => $this->input->post('quizId5')
// Tried testing but it did not worked
// 'ques[]' => $this->input->post('quizId[]')
);
$this->load->model('quiz_model');
$this->data['results'] = $this->quiz_model->getQuestions();
$this->load->view('templates/header');
$this->load->view('activity/result_display', $this->data);
$this->load->view('templates/footer');
而且我也尝试循环它,但是未定义偏移量:发生0错误
$this->data['checks'] = array();
$field_data = $this->input->post('quizId');
for($i = 0; $i < $field_data['radio']; $i++)
{
$this->data['checks'] = array(
'ques' => $field_data['radio'][$i]
);
}
我有一个单选按钮,它具有从数据库中获取的动态值。
我使无线电输入动态化
<?php $i = 'A';
foreach($ans_array AS $array_value):
?>
<?= $i; ?>. <input type="radio" name="quizId[radio][<?= $question->id ?>]" value="<?= $array_value ?>" required /> <?= $array_value ?> <br>
<?php
$i++;
endforeach;
?>
使用数组会更有效率。您可以这样操作:
<input type="radio" name="quizId[<?= $question->id ?>]" value="<?= $array_value ?>" required /> <?= $array_value ?> <br />
因此,在post
之后,您可以遍历整个循环,并获得如下发布结果:
foreach($this->input->post('quizId') as $val){
//work with each value here
}
就像我看到您可以这样更新控制器:
$this->data['checks'] = $this->input->post('quizId');
您已将整个数组发送到view
。现在,在view
文件中,您需要指定键值,使其类似于quizId . $key
。
如果知道键的前缀,则可以使用ARRAY_FILTER_USE_KEY
按键过滤数组,并使用array_combine将过滤后的和重命名的键与过滤后的值组合在一起。
例如:
$array = [
"quizId1" => "value1",
"quizId2" => "value2",
"antoherkey" => "somevalue",
"quizId5" => "value5",
];
$result = array_filter($array, function($s){
return substr($s, 0, 6) === "quizId";
}, ARRAY_FILTER_USE_KEY);
$result = array_combine(array_map(function($s){
return substr_replace($s, "ques", 0, 6);
}, array_keys($result)), $result);
print_r($result);
输出
Array
(
[ques1] => value1
[ques2] => value2
[ques5] => value5
)