0

そのため、最近、配列の配列内のすべての配列の値を1つの配列に追加することに関して、多くの質問をしています。それは素晴らしく、ダンディでした-一種。

私は何かがあるという問題に直面していますvar_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 チケットを持っています。

したがって、ユーザーの下にあるこれらすべての「配列」を1つの配列に追加したかったので、810個の配列を持つUnknownの代わりに、すべての値が合計された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;
            }
        }
    }
}

しかし、私が何か間違ったことをしていない限りUnknown、1 つのアレイではなく 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)
     }
    }
    ...

誰かが私が間違っていることを教えてもらえますか?

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 に答える