所以到目前为止,我一直在问很多关于adding the values of all arrays in an array of arrays into one array.的问题。这很好,很花哨 - 等等。
我遇到了一个问题,我有一些东西var_dump
看起来像:
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个数组的Unknown,而是将所有值加起来,保持相同的键结构。
所以我写了这个:
// $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;
}
}
}
}
但除非我做错了 - 我带回了Unknown
而不是一个阵列的910张门票。
最终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)
}
}
...
有人可以告诉我我做错了吗?
答案 0 :(得分: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>';