Массив в другом формате

Я работаю над restfull api для разработки мобильных приложений. Я возвращаю массив php в json, который похож на

"data": {
    "Waxing": [
        {
            "id": "119",
            "provider_id": "54",
            "provider_service_id": "0",
            "category_id": "15",
            "date": "09-06-2018",
            "time": "08.00 AM,10.00 AM,11.00 AM,12.00 PM,01.00 PM,02.00 PM,03.00 PM,04.00 PM,05.00 PM,06.00 PM,07.00 PM",
            "repeat": "D",
            "deleted_at": null,
            "created_at": "2018-06-09 05:22:47",
            "updated_at": "2018-06-09 14:22:04",
            "setdate": "09 Jun",
            "name": "Waxing"
        }
    ],
    "Massage": [
        {
            "id": "145",
            "provider_id": "54",
            "provider_service_id": "0",
            "category_id": "4",
            "date": "14-06-2018",
            "time": "08.00 AM,09.00 AM,10.00 AM,11.00 AM,12.00 PM,01.00 PM,02.00 PM,03.00 PM,04.00 PM,05.00 PM,06.00 PM,07.00 PM",
            "repeat": "O",
            "deleted_at": null,
            "created_at": "2018-06-13 14:24:15",
            "updated_at": "2018-06-13 14:24:15",
            "setdate": "14 Jun",
            "name": "Massage"
        }
    ]
},

и создав этот вывод с помощью этой строки кода:

        foreach ($getproviderdatetime as $getproviderdatetimes){
            $categorycheck = Category::where('id', '=', $getproviderdatetimes->category_id)->first();
            if (count($categorycheck)>0){
               $alldata[$categorycheck->name][]=$getproviderdatetimes;
            }                
        }

но теперь мне нужны данные в таком формате:

"data": {
  [
    "categoryname": "Waxing",
    "services": [
        {
            "id": "119",
            "provider_id": "54",
            "provider_service_id": "0",
            "category_id": "15",
            "date": "09-06-2018",
            "time": "08.00 AM,10.00 AM,11.00 AM,12.00 PM,01.00 PM,02.00 PM,03.00 PM,04.00 PM,05.00 PM,06.00 PM,07.00 PM",
            "repeat": "D",
            "deleted_at": null,
            "created_at": "2018-06-09 05:22:47",
            "updated_at": "2018-06-09 14:22:04",
            "setdate": "09 Jun",
            "name": "Waxing"
        }
    ]
  ],
  [
    "categoryname": "massage",
    "services": [
        {
            "id": "145",
            "provider_id": "54",
            "provider_service_id": "0",
            "category_id": "4",
            "date": "14-06-2018",
            "time": "08.00 AM,09.00 AM,10.00 AM,11.00 AM,12.00 PM,01.00 PM,02.00 PM,03.00 PM,04.00 PM,05.00 PM,06.00 PM,07.00 PM",
            "repeat": "O",
            "deleted_at": null,
            "created_at": "2018-06-13 14:24:15",
            "updated_at": "2018-06-13 14:24:15",
            "setdate": "14 Jun",
            "name": "Massage"
        }
    ]
  ]
},

У меня есть набор услуг и получение названия категории из базы данных. Я использую фреймворк Laravel и возвращаю данные в формате json. Как я могу этого добиться. Нужна помощь.

Вы не можете. Здесь у вас одинаковые ключи services и categoryname, ключи должно быть уникальны.

u_mulder 14.06.2018 21:44

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

Cody 14.06.2018 21:50
categoryname - это имя ключа, оно не может быть больше однажды.
u_mulder 14.06.2018 21:52

извините, но это то, что требуется моей команде разработчиков, и я застрял в ней

Cody 14.06.2018 21:54

Ваша команда очевидно требует немного другого формата, иначе ваша команда будет неопытной.

u_mulder 14.06.2018 21:56

у тебя есть идея получше? Помогите, пожалуйста

Cody 14.06.2018 21:57

Извините моя ошибка..

Cody 14.06.2018 21:58

Полагаю, вашей команде нужен data как массив объектов. Это моя идея, но лучше попросить разъяснений у команды.

u_mulder 14.06.2018 21:58

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

Cody 14.06.2018 22:00

Позвольте нам продолжить обсуждение в чате.

Cody 14.06.2018 22:03
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
10
45
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вот решение:

foreach ($getproviderdatetime as $getproviderdatetimes){
    $categorycheck = Category::where('id', '=', $getproviderdatetimes->category_id)->first();
    if (count($categorycheck)>0){
       // append new item to all data:
       $alldata[] = [
           "categoryname" => $categorycheck->name,
           "services" => [$getproviderdatetimes],
       ];
    }                
}

Спасибо @u_mulder. но теперь я получаю объект для каждой службы Jsfiddle

Cody 15.06.2018 04:07

И это нормально. Массив предназначен только для ключей с индексом 0.

u_mulder 15.06.2018 09:13
    $testing = []
    foreach ($alldata as $key=>$all){
    array_push($testing,["categoryname"=>$key,"services"=>$all]);
    }
    print_r($testing);

Повторите цикл снова ur $ alldata..Ниже - ваше решение

https://3v4l.org/9iT9l

Другие вопросы по теме