I have an array as follows and I need group type_id
array:11 [▼ 0 => { +"product_id": 521 +"product_name": "Name product 1" +"type_id": 1 } 1 => { +"product_id": 521 +"product_name": "Name product 1" +"type_id": 2 } 2 => { +"product_id": 521 +"product_name": "Name product 1" +"type_id": 3 } 3 => { +"product_id": 526 +"product_name": "Name product 2" +"type_id: 1 } 4 => { +"product_id": 526 +"product_name": "Name product 2" +"type_id": 2 } ]
I want to group the type_id into an array as follows:
array:2 [▼ 0 => { +"product_id": 521 +"product_name": "Name product 1" +"type_id" : { 0 => 1 1 => 2 2 => 3 } } 1 => { +"product_id": 526 +"product_name": "Name product 2" +"type_id": { 0 => 1 1 => 2 } } ]
I tried but couldn’t group type_id . Any help much appreciated! Thanks very much!
Advertisement
Answer
Change the array to collection
, so that you can use collection method like groupBy, map, pluck, values
collect($array)->groupBy('product_id')->map(function($products) { $obj = clone $products->first(); $obj->type_id = $products->pluck('type_id'); return $obj; })->values()->all();