使用相同的键

时间:2016-06-29 22:10:52

标签: php associative-array

我有像这样的关联数组

 $min_stats=
 array(2) 
{ 
[0]=> array(3) 
    { 
        ["minute"]=> object(MongoInt64)#13 (1) 
             { 
                ["value"]=> string(8) "10"
             } 
        ["add"]=> object(MongoInt64)#14 (1) 
            {
                 ["value"]=> string(1) "9"
            }
         ["tag"]=> object(MongoInt64)#15 (1) 
            {       
                ["value"]=> string(1) "4"
            }
     }
 [1]=> array(3) 
    { 
        ["minute"]=> object(MongoInt64)#13 (1) 
             { 
                ["value"]=> string(8) "11"
             } 
        ["add"]=> object(MongoInt64)#14 (1) 
            {
                 ["value"]=> string(1) "9"
            }
         ["tag"]=> object(MongoInt64)#15 (1) 
            {       
                ["value"]=> string(1) "5"
            }
    } 
} Array

现在我想组合数组中的所有键值对来获得一个数组。 结果数组应为

array(11) 
    { 
        ["minute"]=> int(21) 
        ["add"]=> int(18) 
        ["tag"]=> int(9) 
     } Array

所以我写的是

foreach ($min_stats as $k=>$subArray) {
          foreach ($subArray as $id=>$value) {
            $sumArray[$id]+=$value;
          }
        }

但它没有给我正确的结果,我不知道我做错了什么? $ value表示只计算子数组中的元素。 在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

$finalArr = array();
foreach($array as $k1 => $v1){
    foreach($v1 as $k2=>$v2){
        if(!isset($finalArr[$k2])){
            $finalArr[$k2] = 0;
        }
        $finalArr[$k2] += $v2['value'];
    }
}

print_r($finalArr);

输出:

Array
(
    [minute] => 21
    [add] => 18
    [tag] => 9
)

用于测试的简易复制阵列:

$array = array(
    array(
        'minute' => array(
            'value' => '10'
        ),
        'add' => array(
            'value' => '9'
        ),
        'tag' => array(
            'value' => '4'
        ),
    ),
    array(
        'minute' => array(
            'value' => '11'
        ),
        'add' => array(
            'value' => '9'
        ),
        'tag' => array(
            'value' => '5'
        ),
    )
);