总结三层阵列PHP的内容


Summing The Contents Of A Three Tiered Array PHP

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

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);