0

所以最近我一直在问很多关于将数组中所有数组的值添加到一个数组中的问题。这很好,花花公子 - 有点。

我面临一个问题,我有一些东西,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 张票。

因此,我想将用户下的所有这些“数组”添加到一个数组中,因此 Unknown 没有 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)
     }
    }
    ...

有人可以告诉我我做错了什么吗?

4

1 回答 1

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>';
于 2013-11-07T15:54:14.520 回答