对多维数组中的所有“孙子”值求和以创建平面关联数组

问题描述 投票:0回答:3

有人可以解释一下如何获取两个外部数组元素下每个值的总和吗? 我想以一个数组结束,该数组显示 2011 年 11 月 18 日和 2011 年 11 月 22 日每个日期的值。这是数组数据:

[
    'Nov 18, 2011' => [
        'C' => [
            'T' => 49783.531672,
            'X' => 25013.184
        ],
        'S' => [
            'T' => 32908.863528
        ],
        'I' => [
            'T' => 44561.52
        ]
    ],
    'Nov 22, 2011' => [
        'C' => [
            'T' => -5168.944696
        ],
        'S' => [
            'T' => -3823.890504
        ]
    ]
]
php arrays multidimensional-array sum grouping
3个回答
4
投票

如果您每次约会只需要一笔钱:

$totals = array();
foreach ($origarray as $date => $inner) {
    $totals[$date] = array_sum(array_map('array_sum', $inner));
}

如果您想要每个日期多笔金额:

$totals = array();
foreach ($origarray as $date => $item) {
    foreach ($item as $innerk => $innerv) {
        $totals[$date][$innerk] = array_sum($innerv);
    }
}

2
投票

脚本将是:

$results = array();
foreach($array as $element){
    $sum = 0;
    foreach($element as $subelement){
        foreach($subelement as $item => $value){
            $sum = $sum + $value;
        }
    }
    array_push($results, $sum);
}

这将为您提供一个总和数组。 如果您愿意的话,您当然可以为每个名称命名等等。

编辑:超前了。编辑给我的总和,不是计数


0
投票

对于优雅的全功能风格脚本,请在映射的

array_sum()
调用内部调用映射的
array_sum()
演示

var_export(
    array_map(
        fn($set) => array_sum(array_map(array_sum(...), $set)),
        $array
    )
);

输出:

array (
  'Nov 18, 2011' => 152267.0992,
  'Nov 22, 2011' => -8992.8352,
)
© www.soinside.com 2019 - 2024. All rights reserved.