$arr = $results->row();
$score = 0;
foreach ($arr as &$i) {
switch($i){
case ($i <= 4 AND $i >= 1):
$score += 1;
break;
case ($i < 8 AND $i > 4):
$score += 3;
break;
case ($i >= 8):
$score += .5;
break;
}
}
echo $score
这是我当前的代码,它基于大约30 db(SQL)条目累加总值。有点像评分ruberik。 我需要帮助改进上面的代码。有更好的方法吗?
另外。其中一些(即行3,5,8需要以不同的方式得分。)如何在此逻辑中省略这些行并将它们传递给不同的得分?
这是一个codeigniter功能,所以如果有人能给我一个快速简单,漂亮的方法,我会喜欢它!非常感谢!
答案 0 :(得分:1)
可以进行微小的改进,但没有什么大的改进。
isset
调用,而不是检查每个案例(需要多个if / else语句)$skip_iterations = array(3 => 1, 5 => 1, 8 => 1);
$arr = $results->row();
$score = 0;
$i = 1;
foreach ($arr as &$a) {
// skip rows 3, 5, and 8
if (isset($skip_iterations[$i++]))
continue;
if ($a >= 1 && $a <= 4) {
$score += 1;
} else if ($a > 4 && $a < 8) {
$score += 3;
} else if ($a > 8) {
$score += .5;
}
}
echo $score;