有这样的数组(在这里放置代码http://codepad.viper-7.com/mTqf6W)
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'
答案 0 :(得分: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