2015-03-31 100 views
0
Array 
(
    [1~course2 20:00] => Array 
     (
      [0] => Array 
       (
        [pid] => 30 
        [anz_tn] => 6 
       ) 

      [1] => Array 
       (
        [pid] => 30 
        [anz_tn] => 4 
       ) 

      [2] => Array 
       (
        [pid] => 30 
        [anz_tn] => 5 
       ) 
     ) 

    [2~Course2 08:30] => Array 
     (
      [0] => Array 
       (
        [pid] => 30 
        [anz_tn] => 5 
       ) 

      [1] => Array 
       (
        [pid] => 11 
       ) 

      [2] => Array 
       (
        [anz_tn] => 4 
       ) 
) 

....總和子數組的值

我怎樣才能讓所有的「anz_tn」爲每個子陣列的總和? (總和[0] ['anz_tn'],[1] ['anz_tn']等)。

我試過使用$ all [] [$ i] ['anz_tn']但這失敗了。 ($ all是主數組,$ i是子數組的數量)。有沒有使用array_sum的方法?

謝謝!

回答

0

請嘗試這樣,

$sumArray = array(); 

foreach ($myArray as $k=>$subArray) { 
    foreach ($subArray as $id=>$value) { 
    if ($id == 'anz_tn') 
     $sumArray[$id]+=$value; 
    } 
} 

print_r($sumArray); 
+0

雖然這可能會回答這個問題,但在回答中插入一些文字以解釋您正在做的事情總是一個好主意。閱讀[如何寫出一個好答案](http://stackoverflow.com/help/how-to-answer)。 – jurgemaister 2015-03-31 07:20:09

+0

好的確定謝謝 – 2015-03-31 07:24:05

0

謝謝Manadh!

這是指向我在正確的方向。該陣列的一個水平缺失(導致「不支持的操作錯誤」),所以最後我想出了這一點:

$sumArray = array(); 
foreach ($groupasweek as $s1k=>$s1v) { 
    foreach ($s1v as $s2k=>$s2v) { 
     foreach ($s2v as $id=>$value) { 
      if ($id == 'anz_tn') { 
       $sumArray[$s1k][$id] += $value; 
      }   
     } 
    } 
} 

順便說一句,我在哪裏可以接受的答案?

+0

[看這裏](http://meta.stackexchange.com/q/5234/204869)瞭解如何接受答案。謝謝。 – Pang 2015-04-01 10:17:35