我需要计算每个第一级元素的深层元素的总和。
3 级数组示例:
[
1 => [
'A' => ['AA' => 3, 'AB' => 5],
'B' => ['BA' => 2]
],
2 => [
'C' => ['CA' => 4],
'D' => ['DA' => 1, 'DB' => 2]
],
3 => [
'E' => ['EA' => 1, 'EB' => 2, 'EC' => 3],
'F' => ['FA' => 0, 'FB' => 7, 'FC' => 7]
]
]
我想对这些值进行求和,这是我的期望:
Array(
[1] => 10
[2] => 7
[3] => 20
)
这是我用来对值求和的代码:
$total[$country_id][$province_id][$city_id] = $amount;
$result = array();
foreach( $total as $key => $val ){
$total[$key] = array_sum ( $val );
}
有人可以解释我的代码有什么问题或解释 foreach 是如何工作的吗?我的代码的结果是 0,实际上我只学习了大约 1 周的 foreach 知识。
当你想了解更多foreach
,这是使用它的更详细的解决方案:
$total = 0;
$totalByCountry = [];
// iterate over each country
foreach ($arr as $countryId => $provinces) {
$totalByCountry[$countryId] = 0;
// iterate over each province
foreach ($provinces as $provinceId => $cities) {
// iterate over each city
foreach ($cities as $cityId => $value) {
$totalByCountry[$countryId] += $value;
$total += $value;
}
}
}
的结果var_dump(totalByCountry)
:
array (size=3)
1 => int 10
2 => int 7
3 => int 20
的结果var_dump($total)
:
int 37
- 编辑 -
在现实世界的项目中,你最好少一些冗长,并使用针对这种情况的 php 函数,例如array_walk_recursive(), as in 菲利普·毛雷尔 and 菲罗兹艾哈迈德答案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)