2014-04-26 14 views
0

有這樣陣列(放置代碼在這裏http://codepad.viper-7.com/mTqf6WPHP總和值,如果子陣列是不一樣的長度(不相同的數字鍵的)

Array 
(
[17,bank stmt,1,23,3,2014] => Array 
    (
     [0] => Array 
      (
       [RecordDay] => 17 
       [Amount] => 1.5 
      ) 
    ) 
[17,invoice,2,17,3,2014] => Array 
    (
     [0] => Array 
      (
       [RecordDay] => 17 
       [Amount] => 0.21 
      ) 

     [1] => Array 
      (
       [RecordDay] => 17 
       [Amount] => 1 
      ) 

    ) 


) 

想要得到的[Amount]總計爲每個子陣列。對於第一個子數組,只有一個密鑰,所以Total等於[Amount]。但對於第二子陣有2個鍵(可能超過2個鍵),所以在某些方面需要總結所有[Amount]

對於[17,bank stmt,1,23,3,2014]爲1.5,[17,invoice,2,17,3,2014]是1.21

下面一些例子PHP Array_Sum on multi dimensional array嘗試創建代碼。創建

$values = array('Amount' => 0); 
$counter = 0; 
foreach ($temp_array as $key => $item) { 
$values['Amount'] += $item[$counter]['Amount']; 
$counter++; 
} 

得到錯誤 '的通知:未定義抵消:2'

回答

2

如果你有PHP 5.5+,這可以用array_column()array_sum()來完成:

foreach ($array as $sub) { 
    echo array_sum(array_column($sub, 'Amount')); 
} 

使用array_map()提取所有金額然後array_sum()來求和陣列中的值:

foreach ($array as $sub) { 
    echo array_sum(array_map(function($item) { 
     return $item['Amount']; 
    }, $sub)); 
} 

輸出:

1.5 
1.21 

Demo

相關問題