@darktowerk56c

Как правильно изменить структуру массива?

Всем привет. Подскажите, пожалуйста, как правильно изменить структуру массива? Исходный:
[
  {
    "date": "2017-10-16 12:07:07",
    "name_doc_type": "Расход",
    "id": 564564867361367,
    "image": "http://ecosned.ru/image/cache/catalog/categories/iz_fermerskogo_moloka/tvorog/7/ge-catalog-categories-iz_fermerskogo_moloka-tvorog-tvorozhnaya_massa_s_kuragoy-800x800.jpg",
    "name": "Творог 9% с курагой",
    "price": 121.0,
    "quantity": 45,
    "removed": 0
  },
  {
    "date": "2017-10-16 12:07:07",
    "name_doc_type": "Расход",
    "id": 564564867361367,
    "image": "https://www.utkonos.ru/images/photo/3265/3265004H.jpg",
    "name": "Молочный Яблоко 100",
    "price": 25.1,
    "quantity": 44,
    "removed": 0
  },
  {
    "date": "2017-10-16 12:07:07",
    "name_doc_type": "Расход",
    "id": 564564867361367,
    "image": "https://mariupolcena.com/files/products/9ff44136e6ccb0afb404ad26f727e67d.jpeg",
    "name": "Русская картошка чедар 50",
    "price": 46.3,
    "quantity": 86,
    "removed": 0
  },
  {
    "date": "2017-10-16 12:07:07",
    "name_doc_type": "Расход",
    "id": 564564867361367,
    "image": "https://images.ua.prom.st/50389447_w640_h640_ncheskaya_s_grushej_200_g..jpg",
    "name": "Молочный Груша 200",
    "price": 180.0,
    "quantity": 80,
    "removed": 0
  },
  {
    "date": "2017-10-16 12:07:07",
    "name_doc_type": "Расход",
    "id": 564564867361367,
    "image": "https://www.utkonos.ru/images/photo/3054/3054289H.jpg",
    "name": "Аленка карамель 100г Акционный товар Большая скидка",
    "price": 73.9,
    "quantity": 94,
    "removed": 0
  }
  {
    "date": "2017-10-16 15:09:08",
    "name_doc_type": "Расчет",
    "id": 564564867361368,
    "image": "https://www.komus.ru/medias/sys_master/root/hd3/h93/9286922043422.jpg",
    "name": "Молочный Изюм 100",
    "price": 102.0,
    "quantity": 72,
    "removed": 0
  },
  {
    "date": "2017-11-03 13:11:06",
    "name_doc_type": "Приход",
    "id": 564564867361361,
    "image": "https://mariupolcena.com/files/products/9ff44136e6ccb0afb404ad26f727e67d.jpeg",
    "name": "Русская картошка чедар 50",
    "price": 46.3,
    "quantity": 62,
    "removed": 0
  },
  {
    "date": "2017-11-03 13:11:06",
    "name_doc_type": "Приход",
    "id": 564564867361361,
    "image": "http://produkty-online.ru/wa-data/public/shop/products/31/83/18331/images/1359/1359.970.jpg",
    "name": "Молочный Сказка 100",
    "price": 39.0,
    "quantity": 67,
    "removed": 0
  },
  {
    "date": "2017-11-03 13:11:06",
    "name_doc_type": "Приход",
    "id": 564564867361361,
    "image": "https://www.utkonos.ru/images/photo/3139/3139296H.jpg",
    "name": "Тоник 0,5л",
    "price": 63.0,
    "quantity": 51,
    "removed": 0
  },
  {
    "date": "2017-11-03 13:11:06",
    "name_doc_type": "Приход",
    "id": 564564867361361,
    "image": "https://www.komus.ru/medias/sys_master/root/hd3/h93/9286922043422.jpg",
    "name": "Молочный Изюм 100",
    "price": 102.0,
    "quantity": 4,
    "removed": 0
  },
  {
    "date": "2017-11-03 13:11:06",
    "name_doc_type": "Приход",
    "id": 564564867361361,
    "image": "http://ecosned.ru/image/cache/catalog/categories/iz_fermerskogo_moloka/tvorog/7/ge-catalog-categories-iz_fermerskogo_moloka-tvorog-tvorozhnaya_massa_s_kuragoy-800x800.jpg",
    "name": "Творог 9% с курагой",
    "price": 121.0,
    "quantity": 60,
    "removed": 0
  }
]

Что хотелось бы получить:
[
    {
        "date": "2017-11-29 19:31:03",
        "sum": 245.4,
        "docs": [
            {
                "number": 564564867361363,
                "name": "Приход",
                "sum": 150.4,
                "products": [
                    {
                        "name": "Парус апельсин 1л",
                        "image": "https://www.utkonos.ru/images/photo/3265/3265004H.jpg",
                        "price": 25.1,
                        "quantity": 4,
                        "removed": 0,
                        "sum": 100.4
                    },
                    {
                        "name": "Яблоко 1л",
                        "image": "https://www.utkonos.ru/images/photo/3265/3265004H.jpg",
                        "price": 25,
                        "quantity": 2,
                        "removed": 0,
                        "sum": 50
                    }
                ]
            },
            {
                "number": 564564867361362,
                "name": "Расход",
                "sum": 95,
                "products": [
                    {
                        "name": "Парус апельсин 1л",
                        "image": "https://www.utkonos.ru/images/photo/3265/3265004H.jpg",
                        "price": 15,
                        "quantity": 3,
                        "removed": 0,
                        "sum": 45
                    },
                    {
                        "name": "Яблоко 1л",
                        "image": "https://www.utkonos.ru/images/photo/3265/3265004H.jpg",
                        "price": 25,
                        "quantity": 2,
                        "removed": 0,
                        "sum": 50
                    }
                ]
            }
        ]
    },
    {
        "date": "2017-11-29 19:31:03",
        "sum": 245.4,
        "docs": [
            {
                "number": 564564867361363,
                "name": "Приход",
                "sum": 150.4,
                "products": [
                    {
                        "name": "Парус апельсин 1л",
                        "image": "https://www.utkonos.ru/images/photo/3265/3265004H.jpg",
                        "price": 25.1,
                        "quantity": 4,
                        "removed": 0,
                        "sum": 100.4
                    },
                    {
                        "name": "Яблоко 1л",
                        "image": "https://www.utkonos.ru/images/photo/3265/3265004H.jpg",
                        "price": 25,
                        "quantity": 2,
                        "removed": 0,
                        "sum": 50
                    }
                ]
            },
            {
                "number": 564564867361362,
                "name": "Расход",
                "sum": 95,
                "products": [
                    {
                        "name": "Парус апельсин 1л",
                        "image": "https://www.utkonos.ru/images/photo/3265/3265004H.jpg",
                        "price": 15,
                        "quantity": 3,
                        "removed": 0,
                        "sum": 45
                    },
                    {
                        "name": "Яблоко 1л",
                        "image": "https://www.utkonos.ru/images/photo/3265/3265004H.jpg",
                        "price": 25,
                        "quantity": 2,
                        "removed": 0,
                        "sum": 50
                    }
                ]
            }
        ]
    }
]
  • Вопрос задан
  • 65 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Aricus
Перебирайте массив через foreach. Если элемент, куда хотите добавить, не существует, создайте его. В вашем случае, это нужно сделать два раза, сначала с верхним, а потом с нижним уровнем. Потом добавляйте элемент.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Sportrecs Москва
от 150 000 до 200 000 ₽