2012-11-21 91 views
0
Array 
(
    [A1] => Array 
     (
      [1] => 1 
      [2] => 0 
      [3] => 0 
      [4] => 0 
      [5] => 0 
      [6] => 0 
      [7] => 0 
      [8] => 0 
      [9] => 0 
      [10] => 0 
     ) 
     [A2] => Array 
     (
      [1] => 1 
      [2] => 1 
      [3] => 0 
      [4] => 0 
      [5] => 0 
      [6] => 0 
      [7] => 0 
      [8] => 0 
      [9] => 0 
      [10] => 0 
     ) 
     [A3] => Array 
     (
      [1] => 0 
      [2] => 0 
      [3] => 0 
      [4] => 0 
      [5] => 0 
      [6] => 0 
      [7] => 0 
      [8] => 0 
      [9] => 0 
      [10] => 0 
     ) 
) 

現在我必須計算這些多維數組的百分比。怎麼可能找出答案?我怎麼能找出多維數組的平均值

輸出預期是

`Array` 

    (
      [A1] => Array 
       (([1]*100/sum([1]+[1]+[1]), [2]*100/sum([2]+[2]+[2]),.....) 
      [A2] => Array 
       (([1]*100/sum([1]+[1]+[1]), [2]*100/sum([2]+[2]+[2]),.....) 
      [A3] => Array 
       (([3]*100/sum([1]+[1]+[1]), [2]*100/sum([2]+[2]+[2]),.....) 
     ) 

這些A [1] A [2] A [3]是從數據庫中的問題的答案。現在我想計算每個數組的百分比以顯示在圖上。

這是預期的答案。 Array

  (
       [A1] => Array 
        (50,0,0,0,0,0,0,0,0,0) 
       [A2] => Array 
        (50,100,0,0,0,0,0,0,0,0) 
       [A3] => Array 
        (0,0,0,0,0,0,0,0,0,0) 
      ) 
+0

你希望每個陣列或所有陣列的平均值的平均值? –

+0

感謝您的回覆。我正在問像數組[A1]數組(第一個元素/來自3個數組的第一個元素的總和)。 – jaya

+2

你能解釋更多的預期輸出嗎?我相信這可以通過array_map,count和array_sum函數輕鬆完成。 –

回答

2

啊,我看你是想現在要做什麼。

試試這個

$totals = array(); 

// First get our totals. 
foreach ($mainArray as $subKey => $subArray) { 
    foreach ($subArray as $k => $v) { 
     // Add the column to our total. 
     $totals[$k] = isset($totals[$k]) ? $totals[$k] + $v : $v; 
    } 
} 

$answers = array(); 
// Then build our answers. 
foreach ($mainArray as $subKey => $subArray) { 
    $answers[$subKey] = array(); 
    foreach ($subArray as $k => $v) { 
     $answers[$subKey][$k] = ($v * 100)/$totals[$k]; 
    } 
} 

print_r($answers); 
+0

+1爲了解決這個問題;) –

+0

其工作完美的小變化。 $ totals [$ k] = isset($ totals [$ k])? $ totals [$ k] + $ v:$ v; – jaya

+0

調整後,謝謝。 –