获取每个子数组每列的数组和

2023-12-10

这是我的数组:

$array = [
    'HRI' => [
        [14157.72, 39140.94, 36383.66, 38508, 8424],
        [14157.72, 39140.94, 36383.66, 38508, 8424],
        [14157.72, 39140.94, 36383.66, 38508, 8424],
        [14157.72, 39140.94, 36383.66, 38508, 8424],
    ],
    'RHA' => [111562.5, 37880, 11364, 23719.5,  26705],
    'PBA' => [58816.26],
    'MPU' => [432]
];

我想遍历每个子数组并获得每列的总和。

E.g.

对于带有键的子数组HRI:

[HRI] => 
    Array (
        [0] => Array ( [0] => 14157.72 [1] => 10157.72 )
        [1] => Array ( [0] => 39140.94 [1] => 39140.94 )
        [2] => Array ( [0] => 36383.66 [1] => 36383.66 )
        [3] => Array ( [0] => 38508.00 [1] => 38508.00 )
        [4] => Array ( [0] => 8424.00 [1] => 8424.00 )
    )

预期输出:



column 0:
  14157.72 + 39140.94 + 36383.66 + 38508.00 + 8424.00 = ?

column 1:
  10157.72 + 39140.94 + 36383.66 + 38508.00 + 8424.00 = ?
  

这应该适合你:

只需循环数组并获取每个子数组的总和array_sum()

foreach($arr as $k => $v)
    echo $k . " = " . array_sum($v) . "<br>";

输入/输出示例:

$arr = [
        [1,2,3],
        [4,5,6],
        [7,8,9],
    ];

output:

0 = 6
1 = 15
2 = 24

EDIT:

由于您更新了数组结构,因此只需使用:

foreach($arr as $k => $v)
    echo $k . " = " . array_sum(array_map("array_sum", $v)) . "<br>";

EDIT 2:

如果您想要子数组的每个数组的总和,则必须使用两个 foreach 循环,如下所示:

foreach($arr as $k1 => $innerArray) {
    foreach($innerArray as $k2 => $v)
        echo "$k1-$k2 = " . array_sum($v) . "<br>";
    echo "<br><br>";
}

EDIT 3:

我想我终于明白你想要什么了:你只想遍历每个子数组并获得子数组每列的总和:

foreach($arr as $k1 => $innerArray) {
    foreach($innerArray[0] as $k2 => $v)
        echo "$k1-$k2 = " . array_sum(array_column($innerArray, $k2)) . "<br>";
    echo "<br><br>";
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取每个子数组每列的数组和 的相关文章

随机推荐