在PHP中处理多维数组和添加值

在PHP中处理多维数组和添加值,php,arrays,Php,Arrays,所以最近我问了很多问题,关于这一切都很好,有点像花花公子 我面临一个问题,我有一些东西,var\u dumped,看起来像: array(5) { ["AB"]=> array(3) { ["Unknown"]=> array(810) { [0]=> array(7) { ["REG"]=> float(0) ["COST"]=> float(0)

所以最近我问了很多问题,关于这一切都很好,有点像花花公子

我面临一个问题,我有一些东西,
var\u dump
ed,看起来像:

array(5) {
  ["AB"]=>
  array(3) {
    ["Unknown"]=>
    array(810) {
      [0]=>
      array(7) {
        ["REG"]=>
        float(0)
        ["COST"]=>
        float(0)
        ["TOT"]=>
        float(0)
        ["OT"]=>
        float(0)
        ["TRVL"]=>
        float(0)
        ["TRV OT"]=>
        float(0)
        ["TOTAL"]=>
        float(0)
      },
      .... (809 More)
    }
    ["SomeName"]=>
    array(810) {
      [0]=>
      array(7) {
        ["REG"]=>
        float(0)
        ["COST"]=>
        float(0)
        ["TOT"]=>
        float(0)
        ["OT"]=>
        float(0)
        ["TRVL"]=>
        float(0)
        ["TRV OT"]=>
        float(0)
        ["TOTAL"]=>
        float(0)
      },
      .... (809 More)
    }
  }
["MB"]=>
array(3) {
  ["SomeName"]=>
  array(110) {
      [0]=>
      array(7) {
        ["REG"]=>
        float(0)
        ["COST"]=>
        float(0)
        ["TOT"]=>
        float(0)
        ["OT"]=>
        float(0)
        ["TRVL"]=>
        float(0)
        ["TRV OT"]=>
        float(0)
        ["TOTAL"]=>
        float(0)
      },
      .... (109 More)
    }
  }
}
注意:我试图根据返回的数据格式化数组,这是所有真实数据减去实际的800张票-他们的其他省份和更多用户

正如您可以看到的那样,每个省都有一个用户,该用户可以出现在多个省,具有不同程度的“票证”信息。例如,在阿尔伯塔省(AB),SomeName有810张票,而在MB中,同一用户有110张票

因此,我想将用户下的所有这些“数组”添加到一个数组中,因此,它们不是未知的810个数组,而是所有值加在一起的1,保持相同的键结构

所以我写了这个:

// $array  contains the sample array above
foreach($array as $province=>$user){
    foreach($user as $userName=>$tickets){
        $result = array();
        foreach ($tickets as $ticket) {
            foreach ($ticket as $key=>$value) {
                $result[$key] = number_format($result[$key] + $value, 2);
                $array[$province][$userName][] = $result;
            }
        }
    }
}
但除非我做错了什么,否则我会带着910张
Unknown
的票回来,而不是一个数组

最终,
Unknown
应该如下所示:

    ["Unknown"]=>
    array(1) {
      [0]=>
      array(7) {
        ["REG"]=>
        float(0)
        ["COST"]=>
        float(0)
        ["TOT"]=>
        float(0)
        ["OT"]=>
        float(0)
        ["TRVL"]=>
        float(0)
        ["TRV OT"]=>
        float(0)
        ["TOTAL"]=>
        float(0)
     }
    }
    ...

谁能告诉我我做错了什么吗?

这个能帮你解决吗

$all = array();
foreach($array as $province=>$user){
    foreach($user as $userName=>$tickets){
        $result = array();
        foreach ($tickets as $ticket) {
            foreach ($ticket as $key=>$value) {
                $result[$key] = number_format($result[$key] + $value, 2);

            }
        }
        $all[$province][$userName] = $result;
    }
}
echo '<pre>';
print_r($all);
echo '</pre>';
$all=array();
foreach($province=>$user的数组){
foreach($userName=>$tickets的用户){
$result=array();
foreach($tickets作为$ticket){
foreach($key=>$value的票证){
$result[$key]=number_格式($result[$key]+$value,2);
}
}
$all[$province][$userName]=$result;
}
}
回声';
打印(全部);
回声';

Bah,如果我能理解你想做什么,我会帮你的。你的例子对我毫无帮助p我看到的是,您创建了一个名为$result的数组,并不断构建它,并不断将它的每个版本添加到使用foreach遍历的数组中:pMy的例子非常清楚。我想把我给你的第一个数组转换成最后一个数组。因此,与其说
unknown
中有810个数组,不如说它有一个数组,其中每个数组都“合并”到一个数组中,每个键的值都是从每个数组中添加的,例如
TOTAL
可能是7896@horsessmith