如何对多维数组的每个键的值求和

时间:2018-04-23 17:57:04

标签: php arrays

给定如下数组:

$items = array(
    'red' => array(
        '1' => array(2),
        '2' => array(6, 1)
    ),
    'green' => array(
        '2' => array(1, 9),
        '1' => array(1, 2)
    )
);

我试图在数组中找到值的总和。我想要这样的输出:

array (
    [1] => 5,
    [2] => 17

)

我试过这样:

$sumArray = array();
foreach ($items as $k => $subArray) {
    foreach ($subArray as $id => $value) {
        $sumArray[$id] += $value;
    }
}
print_r($sumArray);

但是我遇到了这样的错误:

  

注意:未定义的偏移量:在NN行的/path/to/file.php中为1

     

致命错误:未捕获错误:/path/to/file.php:NN

中不支持的操作数类型

1 个答案:

答案 0 :(得分:0)

您可以使用foreach并使用array_sum。 您可以通过将密钥存储在$sumArray

中来添加数组的总和

首先使用array_key_exists检查密钥是否已存在。如果它不存在,则首次添加总和。如果确实存在,则将其添加为现有值。

$sumArray = [];
foreach ($items as $date) {
    foreach ($date as $key => $amounts) {
        if (!array_key_exists($key, $sumArray)) {
            $sumArray[$key] = array_sum($amounts);
            continue;
        }
        $sumArray[$key] += array_sum($amounts);
    }
}
print_r($sumArray);

那会给你:

Array
(
    [1] => 5
    [2] => 17

)

Demo