给定如下数组:
$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
中不支持的操作数类型
答案 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
)