0

I have this array of objects:

[{'id':1, 'name':'name1', 'src':'1'},
 {'id':1, 'name':'name1', 'src':'2'},  
 {'id':2, 'name':'name2', 'src':'1'},
 {'id':2, 'name':'name2', 'src':'2'}]

And i want to group them by the src in an array like so:

[{'id':1, 'name':'name1', 'src':['1','2']},
 {'id':2, 'name':'name2', 'src':['1','2']}]

Please help i am stuck on that for a good while now, sorry for the novice question.

Jay Blanchard
  • 32,731
  • 15
  • 70
  • 112
devilbone
  • 17
  • 6

1 Answers1

0

Try this:

$array = [{'id':1, 'name':'name1', 'src':'1'},
    {'id':1, 'name':'name1', 'src':'2'},  
    {'id':2, 'name':'name2', 'src':'1'},
    {'id':2, 'name':'name2', 'src':'2'}];
$new_array = array();
foreach ($array as $data)
{
    if ( ! array_key_exists($data['id'], $new_array))
    {
        $new_array[$data['id']] = array('id' => $data['id'], 'name' => $data['name'], 'src' => array());
    }
    $new_array[$data['id']]['src'][] = $data['src'];
}
Styphon
  • 9,859
  • 8
  • 51
  • 82
  • i got an error "Cannot use object of type stdClass as array" so i changed all `$data[]` to `$data->` and it worked. thank you thank you! – devilbone Jan 07 '15 at 15:46