繁体   English   中英

使用Codeigniter提交表单后如何计算数组结果

[英]How to count array result after submit form using codeigniter

我想用Codeigniter创建找平系统。 我从表中检索所有条件,然后用户填写问题区,最后系统做出决定(级别1,级别2或级别3)。

这是我的控制器:

if ($this->input->post('submit_asesmen')) {
        $hitung_asesmen=count($_POST['id_komponen']);
        $level='';
        for ($i=0; $i < $hitung_asesmen; $i++) { 

            $id_asesmen=$_POST['id_komponen'][$i];
            $yes=$_POST['yesorno'][$i];
            $bukti=$_POST['cek'][$i];
            $lihat_level=$this->m_asesmen->select_level($id_asesmen);

            $data_asesmen = array(                  
                'id_komponen_asesmen' => $id_asesmen, 
                'yes_or_no' => $yes, 
                'level' => $lihat_level, 
                );

            $hitung_level_1=$this->m_asesmen->jml_level_1();
            $macam_level_1=$this->m_asesmen->macam_level_1();

            if ($lihat_level=='1' && $yes=='1') {
                echo "Level 1 <br>";
            }
            else{
                echo "Level 0 <br>";
            }
        }
    }

我的临时输出像

Level 1
Level 0
Level 0
Level 0
Level 1
Level 1
Level 1
Level 1
Level 0
Level 0
Level 0

如何创建如下输出:

Level 0 : 6 values
Level 1 : 5 values

这可以通过PHP的function array_count_values() 只需将数组传递给此函数,它将返回一个包含值/计数对的关联数组。

例:

$tempOutput = array('Level 1', 'Level 0', 'Level 0', 'Level 0', 'Level 1', 'Level 1', 'Level 1', 'Level 1', 'Level 0', 'Level 0', 'Level 0');

// will return array('Level 1' => 5, 'Level 0' => 6);
$newOutput = array_count_values($tempOutput);

由于在您的代码中您没有将值保存在数组中,因此手动计数值将是一种更好,更轻松的解决方案:

// array holding the counts for each level
$levels = [];
if ($this->input->post('submit_asesmen')) {
    $hitung_asesmen=count($_POST['id_komponen']);
    $level='';
    for ($i=0; $i < $hitung_asesmen; $i++) { 

        $id_asesmen=$_POST['id_komponen'][$i];
        $yes=$_POST['yesorno'][$i];
        $bukti=$_POST['cek'][$i];
        $lihat_level=$this->m_asesmen->select_level($id_asesmen);

        $data_asesmen = array(                  
            'id_komponen_asesmen' => $id_asesmen, 
            'yes_or_no' => $yes, 
            'level' => $lihat_level, 
            );

        $hitung_level_1=$this->m_asesmen->jml_level_1();
        $macam_level_1=$this->m_asesmen->macam_level_1();

        if ($lihat_level=='1' && $yes=='1') {
            echo "Level 1 <br>";
        }
        else{
            echo "Level 0 <br>";
        }

        // check if a count exists in $levels
        if(!isset($levels[$lihat_level])) {
            // count does not exist, initialize with 1
            $levels[$lihat_level] = 1;
        } else {
            // count already exists, increase by 1
            $levels[$lihat_level] ++;
        }
    }
}

// And this will create the desired output like you wrote it in your question
foreach($levels as $level => $count) {
    echo 'Level ' . $level . ' : ' . $count . ' values<br />';
}

很好的例子,但并不能很好地解释他真正想要的是什么

$arr = array("Level 1","Level 2","Level 3", "Level 4");
$newData = array_count_values($arr);
foreach($arr as $data){
echo $data.":  ".$newData[$data]." value<br>";
}

结果

Level 1: 1 value
Level 2: 1 value
Level 3: 1 value
Level 4: 1 value
if ($this->input->post('submit_asesmen')) {
            $hitung_asesmen=count($_POST['id_komponen']);
            $level='';
            // Define Level Array
            $levels_ary=array();
            for ($i=0; $i < $hitung_asesmen; $i++) { 

                $id_asesmen=$_POST['id_komponen'][$i];
                $yes=$_POST['yesorno'][$i];
                $bukti=$_POST['cek'][$i];
                $lihat_level=$this->m_asesmen->select_level($id_asesmen);

                $data_asesmen = array(                  
                    'id_komponen_asesmen' => $id_asesmen, 
                    'yes_or_no' => $yes, 
                    'level' => $lihat_level, 
                    );

                $hitung_level_1=$this->m_asesmen->jml_level_1();
                $macam_level_1=$this->m_asesmen->macam_level_1();


                if ($lihat_level=='1' && $yes=='1') {
                    $levels_ary[]="Level 1";
                }
                else{
                    $levels_ary[]="Level 0";
                }
            }

            print_r(array_count_values($levels_ary));
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM