2015-03-31 103 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