2016-03-02 390 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); 

我有形式和我在表格上不適用的單選按鈕。當客戶填寫表格時,有時在某些問題上他們需要不適用,因爲他們不適用,並且不需要計入總分。

所以這是生成的報告中%不正確。該百分比應爲:94%。在這張圖片中,你會看到,如果你點擊上圖可以看到:

Graph Once Clicked

它顯示誰回答這個問題的人,有20有一個總量的5個最高點每個人,或在這種情況下,我有N/A框設置爲空白,它返回0.它正在做的是總共所有可能的點是100(20人,5最大點)

我什麼需要它做的是不是計數空白字段,並作爲回報給我例如在圖像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