php - 按键对多面数组中的元素求和
问题描述
我想根据列对数组中的所有元素求和
我试着做这个总和但不是预期的结果。
我的数组:
Array
(
[0] => Array
(
[Periode] => 2008/2009
[Producteurs] => 2
[Sucreries] => 0
[Papeteries] => 0
)
[1] => Array
(
[Periode] => 2008/2009
[Producteurs] => 0
[Sucreries] => 0
[Papeteries] => 5
)
[2] => Array
(
[Periode] => 2008/2009
[Producteurs] => 0
[Sucreries] => 14
[Papeteries] => 0
)
[3] => Array
(
[Periode] => 2009/2010
[Producteurs] => 2
[Sucreries] => 0
[Papeteries] => 0
)
[4] => Array
(
[Periode] => 2009/2010
[Producteurs] => 0
[Sucreries] => 0
[Papeteries] => 4
)
[5] => Array
(
[Periode] => 2009/2010
[Producteurs] => 0
[Sucreries] => 13
[Papeteries] => 0
)
)
我尝试这样:
foreach ($result as $value){
$result[$value]['Periode'] = $result[$value]['Producteurs'] + $result[$value]['Sucreries'] + $result[$value]['Papeteries'];
}
但不是我预期的工作。
预期结果是:
Array
(
[0] => Array
(
[Periode] => 2008/2009
[Producteurs] => 2
[Sucreries] => 14
[Papeteries] => 5
),
[1] => Array
(
[Periode] => 2009/2010
[Producteurs] => 2
[Sucreries] => 13
[Papeteries] => 4
)
实际上,这个想法是按周期对所有元素进行求和,并按周期仅返回一个数组,该数组将包含该周期的每个元素的总和。
解决方案
您正在尝试将所有总数加到一个值中并将它们放入一个数组中,我什至不确定它的结构。您应该建立一组由“时期”索引的条目,然后在遇到新元素时将值添加到这些条目中......
$totals = array();
foreach ( $result as $value ) {
if ( !isset($totals[$value['Periode']])) {
$totals[$value['Periode']] = $value;
}
else {
$totals[$value['Periode']]['Producteurs'] +=$value['Producteurs'];
$totals[$value['Periode']]['Sucreries'] +=$value['Sucreries'];
$totals[$value['Periode']]['Papeteries'] +=$value['Papeteries'];
}
}
print_r(array_values($totals));
array_values()
我用来移除密钥的最终结果。
推荐阅读
- c++ - 向量 pop_back 导致堆缓冲区溢出错误
- javascript - 为什么我不能在侧边栏和导航栏之间切换?
- react-native - 世博会开发客户端应用程序未打开
- node.js - 无法从 Node js 应用程序导入 mgt 元素
- api - 使用 Postman 的 API 调用返回验证码?
- php - if/while - 子句在 wordpress 上导致严重错误
- wagtail - Wagtail 网站中博客应用的模型关系设计
- c++ - 如何优化 gRPC 流服务?
- mysql - SQL 执行顺序(在 SELECT 之前有 HAVING)
- windows - 我不明白如何在批处理脚本中存在任务?