对三层数组PHP的内容求和

对三层数组PHP的内容求和,php,multidimensional-array,foreach,Php,Multidimensional Array,Foreach,这是我正在使用的数组(3层),我试图通过所有变量(不应添加月份)将第一个数组中的第一个月到第二个数组中的第一个月(应为150)的销售额(nosales)相加,依此类推,所以我剩下一个两级数组,其中包含nosales、salevalue、,每个月的销售成本和销售利润合计 Array ( [0] => Array ( [1] => Array (

这是我正在使用的数组(3层),我试图通过所有变量(不应添加月份)将第一个数组中的第一个月到第二个数组中的第一个月(应为150)的销售额(nosales)相加,依此类推,所以我剩下一个两级数组,其中包含nosales、salevalue、,每个月的销售成本和销售利润合计

Array    (
        [0] => Array
            (
                [1] => Array
                    (
                        [month] => 1
                        [nosales] => 100
                        [salevalue] => 1200
                        [salecost] => 360
                        [saleprofit] => 840
                    )

                [2] => Array
                    (
                        [month] => 2
                        [nosales] => 110
                        [salevalue] => 1320
                        [salecost] => 396
                        [saleprofit] => 924
                    )

            )

        [1] => Array
            (
                [1] => Array
                    (
                        [month] => 1
                        [nosales] => 50
                        [salevalue] => 350
                        [salecost] => 70
                        [saleprofit] => 280
                    )

                [2] => Array
                    (
                        [month] => 2
                        [nosales] => 55
                        [salevalue] => 385
                        [salecost] => 77
                        [saleprofit] => 308
                    )

            )

    )
现在,我试着循环它们,让它们相加,但我得到了一些错误。有人能帮忙吗

以下是我目前使用的脚本:

$acc = array_shift($results_array);

foreach ($results_array as $val) {
    foreach ($val as $v) {
        foreach ($v as $key => $v){
        $acc[$key] += $v;
        }
    }
}

提前谢谢你的帮助

这就是你想要做的吗

$aResultsArray = array(
    0 => array(
        1 => array(
            'month' => 1,
            'nosales' => 100,
            'salevalue' => 1200,
            'saleconst' => 360,
            'saleprofit' => 840,
        ),
        2 => array(
            'month' => 2,
            'nosales' => 110,
            'salevalue' => 1320,
            'saleconst' => 396,
            'saleprofit' => 924,
        ),
    ),
    1 => array(
        1 => array(
            'month' => 1,
            'nosales' => 50,
            'salevalue' => 350,
            'saleconst' => 70,
            'saleprofit' => 280,
        ),
        2 => array(
            'month' => 2,
            'nosales' => 55,
            'salevalue' => 385,
            'saleconst' => 77,
            'saleprofit' => 308,
        ),
    ),
);

$aSum = array();
foreach ($aResultsArray as $mYear => $aMonths) {
    foreach ($aMonths as $mMonth => $aMonth) {

        if (!isset($aSum[$aMonth['month']])) {
            $aSum[$aMonth['month']] = array(
                'month' => $aMonth['month'],
                'nosales' => 0,
                'salevalue' => 0,
                'saleconst' => 0,
                'saleprofit' => 0,

            );
        }

        $aSum[$aMonth['month']]['nosales'] += $aMonth['nosales'];
        $aSum[$aMonth['month']]['salevalue'] += $aMonth['salevalue'];
        $aSum[$aMonth['month']]['saleconst'] += $aMonth['saleconst'];
        $aSum[$aMonth['month']]['saleprofit'] += $aMonth['saleprofit'];

    }
}
var_dump($aSum);

是只添加第一个月,还是将所有第一个月与第一个月相加,将第二个月与第二个月相加?预期的输出是什么?我希望第一个月的值被编译成第一个月,第二个月被编译成第二个月,所以我只剩下一个数组,它是所有值的总和。似乎有人已经给了我正确的答案:)谢谢。谢谢,它做了我想要它做的。