0

我有一个像这样的数组:

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

3 回答 3

2

那这个呢?

$result = array();
foreach ($array as $key => $value) {
  foreach ($value as $k => $a) {
    if ( ! isset($result[$k])) $result[$k] = 0;
    $result[$k] += $a;
  }
}
于 2013-06-24T21:45:52.473 回答
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
   ); */
于 2013-06-24T21:51:12.733 回答
0
array_walk_recursive($array, function($val, $key) {
  global $result;
  $result[$key] += $val;
});
于 2013-06-24T22:03:25.223 回答