【问题标题】:Merge ids and sum values of two collections of arrays in Laravel在 Laravel 中合并两个数组集合的 ids 和 sum 值
【发布时间】:2017-12-04 12:08:04
【问题描述】:

我有以下数组:

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 默认集合方法的答案。

【问题讨论】:

    标签: php arrays laravel


    【解决方案1】:

    试试这个

    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;
      });
    })
    

    【讨论】:

      猜你喜欢
      • 2018-07-31
      • 2017-02-22
      • 2016-06-05
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 2019-12-01
      • 2018-09-22
      • 2017-03-07
      相关资源
      最近更新 更多