сортировка / группировка многомерного объекта php

0

У меня есть этот массив объектов:

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

И я хочу сгруппировать их с помощью src в массиве следующим образом:

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

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

Показать ещё 1 комментарий
Теги:
object
arrays
sorting

1 ответ

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 в качестве массива», поэтому я изменил все $data[] на $data-> и это сработало. Спасибо Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню