2015-10-20 98 views
0

我有一个存储值的多维数组,并且我想添加数组中每个元素的值并返回总值的数组。如何在多维数组中添加值

我已经创建了以下可以工作的函数,但它的目的似乎很臃肿。有没有更简单和更干净的方式来做到以下几点?

function get_totals($metric_array){ 
    $totals['value1']=0; 
    $totals['value2']=0; 
    $totals['value3']=0; 
    $totals['value4']=0; 
    $totals['value5']=0; 
    $totals['value6']=0; 
    $totals['value7']=0; 
    $totals['value8']=0; 

    foreach ($metric_array as $metric){ 
     $totals['value1']=$totals['value1']+$metric['value1']; 
     $totals['value2']=$totals['value2']+$metric['value2']; 
     $totals['value3']=$totals['value3']+$metric['value3']; 
     $totals['value4']=$totals['value4']+$metric['value4']; 
     $totals['value5']=$totals['value5']+$metric['value5']; 
     $totals['value6']=$totals['value6']+$metric['value6']; 
     $totals['value7']=$totals['value7']+$metric['value7']; 
     $totals['value8']=$totals['value8']+$metric['value8']; 
    } 
    return $totals; 
} 

回答

2

您可以构建关键value1,使一个for循环从1到8这会节省一些代码:

function get_totals($metric_array){ 
    for ($i = 1; $ <= 8; $i++) { 
    $key = 'value' . $i; 
    $totals[$key] = 0; 
    foreach ($metric_array as $metric){ 
     $totals[$key] += $metric[$key]; 
    } 
    } 
    return $totals; 
} 
0

,我可以看到你正在试图返回列的总和你的功能可以像这样优化。

function get_totals($metric_array){ 
     $totals = array(); 
     foreach ($metric_array as $metric){ 
      foreach ($metric as $key => $val){ 
       $totals[$key] += $val; 
      } 
     } 
     return $totals; 
    }