Ошибка в процентах

Я пытаюсь исправить этот процентный расчет, но сегодня он просто ошеломляет меня.

Вот код:

$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);

У меня есть форма, и у меня есть не применимые радиокнопки на форме. Когда клиент заполняет форму, иногда по определенным вопросам они должны быть недоступны, потому что они не применяются, и это не должно учитываться в общем общем балле.

Так что это сгенерированный отчет, который% является неправильным. Этот процент должен читать: 94%. На этом рисунке вы увидите, что если вы нажмете на график, вы увидите следующее:

График после нажатия

Это показывает людей, которые ответили на этот вопрос, и их 20. Всего 5 баллов для каждого человека, или в этом случае у меня установлено поле N / A пустым, которое возвращает 0. Что он делает суммирует все возможные баллы, которые составляют 100. (20 человек и 5 максимальных баллов)

Что мне нужно сделать, это НЕ подсчитайте пустые поля и в ответ дайте мне, например, на изображении График после нажатия только 5 человек ответили, поэтому максимальное количество баллов — 25. Общее количество баллов — 23,5, то есть 23,5 / 25.

0

Решение

Как насчет этого кода? Общий процент ответов на вопросы находится в переменной $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;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]