2015-10-15 4 views
0

Здравствуйте у меня есть следующие JSON:Группа аналогичные элементы в массиве объектов

 [ 
    { 
     "name": "Donation", 
     "collection": { 
     "name": "Donation Company 1", 
     "collection": { 
      "id": 1, 
      "category": "Donation", 
      "name": "Some Donation", 
      "price": 10, 
      "description": "Hahahaha", 
      "company": "Donation Company 1" 
     } 
     } 
    }, 
    { 
     "name": "Donation", 
     "collection": { 
     "name": "Donation Company 1", 
     "collection": { 
      "id": 2, 
      "category": "Donation", 
      "name": "Another Donation", 
      "price": 50, 
      "description": "LoL", 
      "company": "Donation Company 1" 
     } 
     } 
    }, 
    { 
     "name": "Insurance Company 1", 
     "collection": { 
     "name": "Hehe", 
     "collection": { 
      "id": 3, 
      "category": "Insurance", 
      "name": "Lorem Ipsum Solor", 
      "price": 25, 
      "description": "Lmao", 
      "company": "Insurance Company 1" 
     } 
     } 
    }, 
    { 
     "name": "Insurance Company 2", 
     "collection": { 
     "name": "Donation Company 1", 
     "collection": { 
      "id": 5, 
      "category": "Insurance", 
      "name": "Sample Extra", 
      "price": 500, 
      "description": "Lorem ipsum dolor", 
      "company": "Insurance Company 2" 
     } 
     } 
    } 
    ] 

У меня возникли проблемы, пытаясь сгруппировать похожие элементы вместе, как и во всех элементов в одной и той же категории появляются в одной и той же категории массив. И в каждой категории все элементы, имеющие одну и ту же компанию, попадают в один и тот же массив компаний.

Это пример того, что я пытаюсь сделать, я использовал редактор построить JSON: expected-json-output-when-saved

Я использовал Laravel сбора() вспомогательной функцию, чтобы построить мой массив объектов, я попробовали несколько комбинаций в петлях foreach и были у него часами, но до сих пор не смогли вернуть ожидаемый JSON.

ответ

0

Предполагая, что вы json_decode(), что JSON строки и хранить его в $json переменной, вы можете сделать следующее:

$collection = collect($json); 

$collection = $collection->groupBy('collection.collection.category'); 

Свалка $collection переменную, чтобы увидеть результат.

+0

Спасибо за ваш ввод, но я не думаю, что вы поняли вопрос, объект JSON, который показан в моем вопросе, является тем, что в настоящее время возвращается клиенту. Если вы перейдете по ссылке в моем сообщении, вы увидите, как я хочу, чтобы данные были возвращены. Я уже создал коллекцию, но не смог вернуть ее таким образом. – user3718908

+0

Привет. Возможно, вам нужно опубликовать код, который сгенерировал эту строку JSON, поскольку я не думаю, что это произошло из Laravel 'Collection'. AFAIK, Laravel 'Collection' должен всегда отображаться как массив в JSON. –

+0

О, извините, я думаю, что был в полусонном состоянии, когда увидел ваше сообщение, я понимаю это сейчас и да, это действительно коллекция. С вашей помощью я смог группировать по категориям, чтобы получить это: http://www.jsoneditoronline.org/?id=aad6ff58280f2bbdc3334dc42ae63507 – user3718908