Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何对多维数组的每个键的值求和_Php_Arrays - Fatal编程技术网

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

Php 如何对多维数组的每个键的值求和,php,arrays,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]

给定如下所示的数组:

$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);
我试着这样做:

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

)
$sumArray = array();
foreach ($items as $k => $subArray) {
    foreach ($subArray as $id => $value) {
        $sumArray[$id] += $value;
    }
}
print_r($sumArray);
但我有这样的错误:

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中的操作数类型


您可以使用
foreach
并使用。 您可以通过将键存储在
$sumArray
中来添加数组的总和

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

$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

)

请在问题中突出显示一些代码。一点也看不懂,那你试过什么?我看不到任何代码…我试过这样$sumArray=array();foreach($k=>$subArray的项){foreach($id=>$value的子数组){$sumArray[$id]+=$value;}}}print\r($sumArray);我遇到了如下致命错误:致命错误:不支持的操作数types@limimathew你能将你的评论中的代码添加到你的问题中吗?@nanditha在我发布我的答案后,你更新了你的示例数据,我的答案中的代码仍然适用于新数据。因此,第一次编辑是可以的。但您的第二次编辑不是。建议的代码不能提供所需的结果。你为什么不勾选标记?