PHP;遍历关联数组并将所有值相加

PHP;遍历关联数组并将所有值相加,php,multidimensional-array,iterator,Php,Multidimensional Array,Iterator,我有一个数组,我需要“合并”它的值,然后将整个数组展平,使其不具有关联性。我有这个工作,但我希望找到一个更好的方法 本质上,这里是数组: array ( [label] => array( [0] => array( key => val ) [1] => array( key => val ) ) [label2] => a

我有一个数组,我需要“合并”它的值,然后将整个数组展平,使其不具有关联性。我有这个工作,但我希望找到一个更好的方法

本质上,这里是数组:

array (
    [label] => array(
        [0] => array(
            key => val
        )
        [1] => array(
            key => val
        )
    )
    [label2] => array(
        [0] => array(
            key => val
        )
    )
我所做的是将每个关联数组中[0]和[1]的所有值相加,并返回1个数组,其中输出类似于:

array (
    [label] => array(
        [0] => array(
            key => SUM(val1+val2)
        )
    )
    [label2] => array(
        [0] => array(
            key => val
        )
    )
我通过以下方式做到这一点:

$i = array();

foreach ($array AS $key => $val) {
    $i[$key] = NULL;

    foreach ($val AS $r) foreach ($r AS $k => $v) {
        if (count($array[$key]) > 1) { // Add value.
            $i[$key][$k] += $v; 

        } else { // Leave alone.
            $i[$key][$k] = $v;
        }
    }
}
然后我使用以下方法将其展平为一个大阵列:

$array = array();

$r = new RecursiveIteratorIterator(
    new RecursiveArrayIterator($array)
);

foreach ($r as $key => $val) 
    $array[$key] = $val;

return $array
我认为这是丑陋的,可以用一种更有效的方式来做。我就是搞不懂,SPL把我弄糊涂了;但是我想学习

有人能帮忙吗


我想我明白了:

    $data = array();
    $RII = new RecursiveIteratorIterator(
        new RecursiveArrayIterator($it)
    );

    foreach($RII AS $key => $val) {
        $data[$RII->key()] += $RII->current();
    }

    $this->fullData = $data;
用更少的代码做了我需要做的一切。这个看起来对吗

$data = array();
$RII = new RecursiveIteratorIterator(
    new RecursiveArrayIterator($it)
);

foreach($RII AS $key => $val) {
    $data[$RII->key()] += $RII->current();
}

$this->fullData = $data;
替换上述两个函数。它毫无疑问地通过多维数组,并允许我做我需要做的事情