0

特定のユーザーに返されるモデルオブジェクトがあり、そこでvar_dumpオブジェクトを編集して、次のような配列を取得しました。

array(2) {
  [0]=>
  array(10) {
    ["ticket_labor_ot_travel_c"]=>
    string(5) "34.50"
    ["ticket_labor_travel_c"]=>
    string(5) "23.00"
    ["ticket_labor_ot_c"]=>
    string(5) "34.50"
    ["ticket_labor_reg_c"]=>
    string(5) "23.00"
    ["ticket_labor_user_id"]=>
    string(3) "319"
    ["ticket_labor_tot_hours"]=>
    string(4) "0.50"
    ["ticket_labor_reg_hours"]=>
    string(4) "0.50"
    ["ticket_labor_ot_hours"]=>
    string(4) "0.00"
    ["ticket_labor_travel_hours"]=>
    string(4) "0.00"
    ["ticket_labor_ot_travel_hours"]=>
    string(4) "0.00"
  }
  [1]=>
  array(10) {
    ["ticket_labor_ot_travel_c"]=>
    string(4) "0.00"
    ["ticket_labor_travel_c"]=>
    string(4) "0.00"
    ["ticket_labor_ot_c"]=>
    string(4) "0.00"
    ["ticket_labor_reg_c"]=>
    string(4) "0.00"
    ["ticket_labor_user_id"]=>
    string(1) "0"
    ["ticket_labor_tot_hours"]=>
    string(4) "0.00"
    ["ticket_labor_reg_hours"]=>
    string(4) "0.00"
    ["ticket_labor_ot_hours"]=>
    string(4) "0.00"
    ["ticket_labor_travel_hours"]=>
    string(4) "0.00"
    ["ticket_labor_ot_travel_hours"]=>
    string(4) "0.00"
  }
}

今私が抱えている問題は、1:このモデルは for ループの側で呼び出されるため、これらの配列の多くを取得できる (これらの配列はそれぞれ別のユーザーに関連付けられている) 2:各配列は、内部には 2 つ以上の配列があり、実際に戻ってくる配列の一部は最大 40 まで持つことができます。

したがって、私がやりたいことは、基本的に、上記の配列を例として使用する場合、その配列を使用して作成することです。

array(2) {
  [0]=>
  array(10) {
    ["ticket_labor_ot_travel_c"]=>
    string(5) "34.50"
    ["ticket_labor_travel_c"]=>
    string(5) "23.00"
    ["ticket_labor_ot_c"]=>
    string(5) "34.50"
    ["ticket_labor_reg_c"]=>
    string(5) "23.00"
    ["ticket_labor_user_id"]=>
    string(3) "319"
    ["ticket_labor_tot_hours"]=>
    string(4) "0.50"
    ["ticket_labor_reg_hours"]=>
    string(4) "0.50"
    ["ticket_labor_ot_hours"]=>
    string(4) "0.00"
    ["ticket_labor_travel_hours"]=>
    string(4) "0.00"
    ["ticket_labor_ot_travel_hours"]=>
    string(4) "0.00"
  }
}

上記の配列は、返された配列の配列内のすべての配列を取得し、それら$key=>$valueのすべてを一緒に追加して、すべての合計を含む 1 つの配列を返すことによって作成されます。上記の例の場合、返された配列内の 2 つの配列を取得し、同じキー構造を持つ 1 つの配列を作成し、すべての値を一緒に追加しました。この場合、それぞれが 0 であったため、各キーの結果の値は 0 です。 .

問題は、これを行うためのクリーンで効率的な方法が見つからないことです。私が試したすべてのアプローチは、各値を試行して保存する for ループで大規模です....

これを行うクリーンなOOPの方法はありますか?

4

1 に答える 1

1

私はこれが大規模であるとは考えていません:

$result = array();
foreach ($container as $innerArray) {
    foreach ($innerArray as $key=>$value) {
        $result[$key] = number_format($result[$key] + $value, 2);
    }
}
var_dump($result);

ここにデモンストレーションがあります。実際に追加されていることを示すために、いくつかの値を変更しました。

于 2013-11-06T19:24:54.907 に答える