2016-03-02 4 views
0

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

Вот код:

$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%. В этой картине вы увидите, если вы нажмете на графике вы можете увидеть это:

Graph Once Clicked

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

Что я нужно, чтобы это было NOT подсчет пустых полей и в ответ дайте мне, например, на картинке Graph Once Clicked есть только 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

Это не сработало. Вот файл: http://myboxv.com/file/1456954898_reporting-customersatisfaction –

+0

Но большое вам спасибо за это, это так много! : D –

+0

Можете ли вы дать дополнительную информацию? Что точно не работает? Есть ли у вас ошибка PHP? Или номер был неправильным? – Miro

Смежные вопросы