合并Laravel中两个数组集合的id和sum值

时间:2017-11-09 13:22:36

标签: php arrays laravel

我有以下数组:

array:2 [▼
  0 => array:2 [▼
    "id" => 3
    "total" => 2
  ]
  1 => array:2 [▼
    "id" => 4
    "total" => 1
  ]
]

array:2 [▼
  0 => array:2 [▼
    "id" => 3
    "total" => 5
  ]
  1 => array:2 [▼
    "id" => 4
    "total" => 5
  ]
  2 => array:2 [▼
    "id" => 5
    "total" => 2
  ]
]

我需要将它们合并在一起,保持id并对结果求和,所以我得到结果数组:

array:2 [▼
  0 => array:2 [▼
    "id" => 3
    "total" => 7
  ]
  1 => array:2 [▼
    "id" => 4
    "total" => 6
  ]
  2 => array:2 [▼
    "id" => 5
    "total" => 2
  ]
]

这些数组来自使用toArray()方法的laravel数据库查询,因此欢迎包含laravel默认收集方法的答案。

1 个答案:

答案 0 :(得分:0)

试试这个

arr3 = arr1->merge(arr2);
arr3->map(function(itemM)use(arr1, arr2){
  return itemM->total = arr1->sum(function(itemS)use(itemM){
    return itemS->id == itemM->id ? itemS->total : 0;
  }) + 
  arr2->sum(function(itemS)use(itemM){
    return itemS->id == itemM->id ? itemS->total : 0;
  });
})