计算百分比误差


Calculating Percentages Error

我正在尝试修复这个百分比计算,但是今天它只是难倒了我。

这是代码:

$entries = GFAPI::get_entries($form['id'], $search_criteria);
$score = 0;
$max = 0;
$percentage = array();
if(!empty($entries)) {
    foreach ($entries as $entry) {
        $score = GFSurvey::get_field_score($form_fields, $entry);
        $max = end($form_fields['choices']);
        if(empty($max['score'])) {
            unset($form_fields['choices'][key($form_fields['choices'])]);
            $max = end($form_fields['choices']);
            }
        $max = $max['score'];
        $percentage[] = ($score / $max ) * 100;
        }
    }
$average = round(array_sum($percentage) / count($percentage), 2);

我有表单,但表单上有"不适用"单选按钮。当客户填写表格时,有时在某些问题上他们需要 N/A,因为他们不适用,也不需要计入总分。

因此,这是生成的报告,其中%不正确。这个百分比应该为:94%。在这张图片中,您将看到,如果您单击图表,您可以看到以下内容:

点击后的图形

它显示了回答这个问题的人,有 20 个。每个人总共有 5 个最高分,或者在本例中,我将 N/A 框设置为空白,返回 0。它正在做的是将所有可能的点相加,即 100。(20人,最高5分)

我需要做的是不计算空白字段,作为回报,例如在图像中给我 图表 点击后,只有 5 人回答,所以最高分是 25。 总分是 23.5 所以 23.5/25。

这段代码怎么样?回答问题的总百分比以可变$total_percentage表示。

$entries = GFAPI::get_entries($form['id'], $search_criteria);
$score = 0;
$max = 0;
$total_max = $total_score = 0;
$percentage = array();
if(!empty($entries)) {
    foreach ($entries as $entry) {
        $score = GFSurvey::get_field_score($form_fields, $entry);
        $max = end($form_fields['choices']);
        if(empty($max['score'])) {
            unset($form_fields['choices'][key($form_fields['choices'])]);
            $max = end($form_fields['choices']);
            }
        $max = $max['score'];
        if ($max) {
            $total_score += $score;
            $total_max += $max;
        }
        $percentage[] = ($score / $max ) * 100;
        }
    }
$average = round(array_sum($percentage) / count($percentage), 2);
$total_percentage = ($total_max > 0) ? round($total_score/$total_max/100, 2) : 0;