我想用Codeigniter创建调平系统。 我从表中检索所有条件,然后用户填写quistionare,最后系统进行decission,level 1,level 2或level 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
答案 0 :(得分:1)
这可以通过PHP的函数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 />';
}
答案 1 :(得分:0)
很好的例子,但它并不能很好地解释他真正想要的东西 试试这个
示例强>
$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
答案 2 :(得分:0)
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));
}