首页 > 解决方案 > 循环发布数组以使动态

问题描述

我想让这段代码更简单、更干净,我正在制作测验应用程序,所以我有 20 个答案。现在这个问题是如果我想让它成为 50 个答案。我不想输入 50 个新答案。

该代码运行良好,但问题是全部都是静态编码的。我怎样才能简化它以更有效地添加问题?我使用单选按钮作为其输入。这也是主要问题,因为它没有动态。我可以循环这个吗?之前尝试过,但没有按预期工作

public function resultDisplay(){

        $this->data['checks'] = array(
            'quest1' => $this->input->post('quizId1'),
            'quest2' => $this->input->post('quizId2'),
            'quest3' => $this->input->post('quizId3'),
            'quest4' => $this->input->post('quizId4'),
            'quest5' => $this->input->post('quizId5'),
            'quest6' => $this->input->post('quizId6'),
            'quest7' => $this->input->post('quizId7'),
            'quest8' => $this->input->post('quizId8'),
            'quest9' => $this->input->post('quizId9'),
            'quest10' => $this->input->post('quizId10'),
            'quest11' => $this->input->post('quizId11'),
            'quest12' => $this->input->post('quizId12'),
            'quest13' => $this->input->post('quizId13'),
            'quest14' => $this->input->post('quizId14'),
            'quest15' => $this->input->post('quizId15'),
            'quest16' => $this->input->post('quizId16'),
            'quest17' => $this->input->post('quizId17'),
            'quest18' => $this->input->post('quizId18'),
            'quest19' => $this->input->post('quizId19'),
            'quest20' => $this->input->post('quizId20'),
        );

        $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');
    }

我查看页面源图像,这里是单选按钮的数组,您可以在突出显示的名称上看到它

查看页面源代码

这是我的单选按钮,我需要将其设为数组吗?如何?

    <?php $i = 'A';
        foreach($ans_array AS $array_value): 
    ?>
    <?= $i; ?>.&nbsp; 

    <input type="radio" name="quizId<?= $question->id ?>" value="<?= $array_value ?>" required /> <?= $array_value ?> <br>

    <?php 
        $i++; 
        endforeach; 
    ?>

标签: phparrayscodeignitercodeigniter-3

解决方案


使用数组会更有效。你可以这样做:

<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文件中,您需要将键值指定为 like quizId . $key


推荐阅读