'Laravel Combine Multi Dimensional Array Based On Year Value

This one is my array want to combine based on year value

  0 => array:3 [▼
    "year" => 2022
    "total_policies_financed" => 1
    "total_amount_financed" => 280.0
  ]
  1 => array:3 [▼
    "year" => 2022
    "total_policies_financed" => 2
    "total_amount_financed" => 5190.0
  ]
  2 => array:3 [▼
    "year" => 2021
    "total_policies_financed" => 2
    "total_amount_financed" => 5190.0
  ]

need output like this

  0 => array:3 [▼
    "year" => 2022,
    "total_count" => 2,
    "total_policies_financed" => 3
    "total_amount_financed" => 5470
  ]
  1 => array:3 [▼
   "year" => 2021,
    "total_count" => 1,
    "total_policies_financed" => 2
    "total_amount_financed" => 5190.0
  ]


Solution 1:[1]

Try this:

$arr = collect($array)->groupBy('year')->map(function ($items, $key){
    return [
        'year' => $key,
        'total_count' => $items->count(),
        'total_policies_financed' => $items->sum('total_policies_financed'),
        'total_amount_financed' => $items->sum('total_amount_financed'),
    ];
})->values();

dd($arr);

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Sona Khachatryan