在PHP中合并数组数组中每个数组的值

时间:2013-11-06 19:18:08

标签: php arrays

我有一个为特定用户返回的模型对象,其中我var_dump ed对象并得到一个如下所示的数组:

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"
  }
}

现在我遇到的问题是, One:这个模型在for循环中被调用,因此我可以找回许多这些数组(这些数组中的每一个都绑定到不同的用户)和两个:每个数组都可以拥有,其中有两个以上的数组,实际上一些返回的数组最多可以有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一起添加到一起并返回一个包含所有数组的数组。所以在上面的例子的例子中,我把返回的数组中的两个数组,创建了一个具有相同键结构的数组,并将所有值加在一起,在这种情况下每个都是0,因此每个键的结果值是0

问题是 - 我找不到干净,有效的方法来做到这一点,我尝试的所有方法都是大量的循环,试图存储每个值....

有没有干净的OOP方式呢?

1 个答案:

答案 0 :(得分:1)

我不认为这是大规模的:

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

Here is a demonstration。我更改了一些值,以表明它们实际上已被添加。