组合多级数组中的数组值

时间:2013-06-24 21:41:04

标签: php arrays

我有一个像这样的数组:

array(
    'a'=>array(
        'a'=>3,
        'f'=>5,
        'sdf'=>0),
    't'=>array(
        'a'=>1,
        'f'=>2,
        'sdf'=>5),
    'pps'=>array(
        'a'=>1,
        'f'=>2,
        'sdf'=>3)
);

注意每个顶级数组的子数组是如何相同的。如果我想,组合子数组的最简单方法是什么,以便我留下一维数组,如:

array(
    'a'=>5,
    'f'=>9,
    'sdf'=>8
);

3 个答案:

答案 0 :(得分:2)

这个怎么样?

$result = array();
foreach ($array as $key => $value) {
  foreach ($value as $k => $a) {
    if ( ! isset($result[$k])) $result[$k] = 0;
    $result[$k] += $a;
  }
}

答案 1 :(得分:0)

两个嵌套的foreach和实际创建一个新数组怎么样?

$input = array(
    'a'=>array(
        'a'=>3,
        'f'=>5,
        'sdf'=>0),
    't'=>array(
        'a'=>1,
        'f'=>2,
        'sdf'=>5),
    'pps'=>array(
        'a'=>1,
        'f'=>2,
        'sdf'=>3)
);

$output = array();
foreach ($input as $v) {
    foreach ($v as $k2 => $v2) {
        if (!isset ($output[$k2])
            $output[$k2] = 0;
        $output[$k2] += $v2;
    }
}

/* Now $output = array(
       'a'=>5,
       'f'=>9,
       'sdf'=>8
   ); */

答案 2 :(得分:0)

array_walk_recursive($array, function($val, $key) {
  global $result;
  $result[$key] += $val;
});