2012-09-22 50 views
1

我有數組是這樣的:array('id'=>value,'id'=>value)如何在PHP中從不同的數組中總結相同的元素?

$arrays=array(
    [0] => Array ([3] => 1, [102] => -1, [15] => 1,)    
    [1] => Array ([5] => 1, [80] => -1)     
    [2] => Array ([99] => -1, [3] => -1,[5] => 1) 
) 

我需要得到一個給定鍵的總結果。在上面的例子,如果要求的3號,總和爲0,如果索要5號,總和爲2。我只能想到這樣的事情:

foreach($arrays as $array){ 
    foreach($array as $id=>$v){ 
    if($id == $asked) 
     $total = $total + $v; 
    } 
    } 

不知怎的,我想有有成爲一種有效的工作方式。我樂意去學。謝謝!

+0

不,這是我能想到的也是最有效的方法。因爲你將它們與嵌套數組相匹配。 – hjpotter92

+1

選擇此項: http://stackoverflow.com/questions/1496682/php-how-to-sum-values-of-the-array-of-the-same-key – mongotop

+0

@kech您發佈了相同的評論3次。 – Barmar

回答

0
foreach($arrays as $array) { 
    $total += $array[$id]; 
} 
2

使用array_reduce

$key = 3; 

$sum = array_reduce($arrays, function(&$memo, $item) use($key){ 

    array_key_exists($key, $item) && $memo += $item[$key]; 

    return $memo; 

}); 
0
$prec_array=end($arrays); 
foreach($arrays as $array){ 
    foreach($array as $id=>$v){ 
    if(array_key_exists($id, $prec_array)) 
      $total[$id] += $v + $prec_array[$id] ; 
    $prec_array = $array; 
    } 
} 
相關問題