通过后期数组Codeigniter PHP循环

问题描述 投票:0回答:2

我需要获取测验游戏的结果。

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; ?>.&nbsp; <input type="radio" name="quizId[radio][<?= $question->id ?>]" value="<?= $array_value ?>" required /> <?= $array_value ?> <br>

    <?php 
        $i++; 
        endforeach; 
    ?>
php arrays codeigniter codeigniter-3
2个回答
1
投票

使用数组会更有效率。您可以这样操作:

<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


0
投票

如果知道键的前缀,则可以使用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
)

Php demo

© www.soinside.com 2019 - 2024. All rights reserved.