-1

I have this array in PHP:

$a = [
['name'=>'salvar','type'=>'Qt','count'=>'1','price'=>'10','total'=>'7'],
['name'=>'salvar','type'=>'Qt','count'=>'1','price'=>'10','total'=>'7'],
['name'=>'salvar','type'=>'Qt','count'=>'1','price'=>'10','total'=>'7'],
['name'=>'salvar','type'=>'Qt','count'=>'1','price'=>'10','total'=>'7'],
['name'=>'salvar','type'=>'Qt','count'=>'1','price'=>'10','total'=>'7'],
['name'=>'corab' ,'type'=>'Qt','count'=>'1','price'=>'10','total'=>'7'],
['name'=>'corab' ,'type'=>'Qt','count'=>'1','price'=>'10','total'=>'7'],
['name'=>'corab' ,'type'=>'Qt','count'=>'1','price'=>'10','total'=>'7'],
['name'=>'yag' ,'type'=>'Qt','count'=>'1','price'=>'10','total'=>'7'],
];

I want to collect same array in one array. Can anyone help please? i need some thing like this result

 [
  [
   ['name'=>'salvar','type'=>'Qt','count'=>'1','price'=>'10','total'=>'7'],
   ['name'=>'salvar','type'=>'Qt','count'=>'1','price'=>'10','total'=>'7'],
   ['name'=>'salvar','type'=>'Qt','count'=>'1','price'=>'10','total'=>'7'],
   ['name'=>'salvar','type'=>'Qt','count'=>'1','price'=>'10','total'=>'7'],
   ['name'=>'salvar','type'=>'Qt','count'=>'1','price'=>'10','total'=>'7']
  ],
  [
   ['name'=>'corab' ,'type'=>'Qt','count'=>'1','price'=>'10','total'=>'7'],
   ['name'=>'corab' ,'type'=>'Qt','count'=>'1','price'=>'10','total'=>'7'],
   ['name'=>'corab' ,'type'=>'Qt','count'=>'1','price'=>'10','total'=>'7'],
  ],
  [
   ['name'=>'yag' ,'type'=>'Qt','count'=>'1','price'=>'10','total'=>'7']
  ]
 ]

1 Answers1

3

It can be done by standard functions

$res = [];
foreach(array_count_values(array_map('json_encode', $a)) as $k=>$v) {
    $res[] = array_fill(0, $v, json_decode($k, true));
}

demo on eval.in

splash58
  • 26,043
  • 3
  • 22
  • 34