2015-01-07 3 views
0

У меня есть этот массив объектов:сортировки/группировки многомерном объект PHP

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

И я хочу, чтобы сгруппировать их по СРК в массиве таким образом:

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

Пожалуйста, помогите я застрял на этом в течение долгого времени, извините за новичок вопрос.

+3

Пожалуйста, поделитесь, что вы пробовали. На это есть много ответов на SO. –

+0

Возможный дубликат [Ссылка: все основные способы сортировки массивов и данных в PHP] (http://stackoverflow.com/questions/17364127/reference-all-basic-ways-to-sort-arrays-and-data-in -php) – sodawillow

+0

Похож на JSON для меня, не так ли? – Rizier123

ответ

0

Попробуйте это:

$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']; 
} 
+0

У меня возникла ошибка «Невозможно использовать объект типа stdClass as array», поэтому я изменил все '$ data []' на '$ data->', и он сработал. Спасибо Спасибо! – devilbone