search

Home  >  Q&A  >  body text

Laravel combine multidimensional array based on year value

This is the array I want to combine based on the 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 such output

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
  ]

P粉193307465P粉193307465309 days ago378

reply all(1)I'll reply

  • P粉633075725

    P粉6330757252024-02-18 18:25:28

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

    reply
    0
  • Cancelreply