[英]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.