@hrustbb2

Как преобразовать двумерный массив возвращаемый MySQL?

Коллеги, для примера, имеется БД со следующими таблицами city, house со следующими полями:
city:
-id
-name

house:
-id
-city_id
-heigh
-width


Запросив из базы информацию обо всех городах с домами в них, сджойнив две таблицы, получим на выходе плоский, двумерный массив.

Существуют ли более-менее универсальные средства для того чтобы получить из подобного двумерного массива массив вида:

[
  id => 1,
  name => city1,
  house => [
    id => 1,
    heigh => 100,
    width => 200,
  ]
],
[
  id => 1,
  name => city1,
  house => [
    id => 2,
    heigh => 200,
    width => 300,
  ]
]


То есть массив повторяющий структуру запрашиваемых данных?

UPD: Под более-менее универсальным средством я подразумеваю, что не всегда заранее известно количество вложенных данных и глубина вложенности. То есть на входе некоторая конфигурация и плоский массив, на выходе массив с определенной структурой.
  • Вопрос задан
  • 209 просмотров
Решения вопроса 1
@hrustbb2 Автор вопроса
Для себя решил так: статья на хабре
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
FanatPHP
@FanatPHP
Чебуратор тега РНР
Комментировать
@KingstonKMS
У вас один дом в городе?
Всё же house должен быть массивом.
Вам придётся использовать цикл. Поэтому лучше сделать так:
1. Выборка городов
2. По каждому городу делаете выборку домов, создаёте массив с полями города и добавляете в него house с выборкой домов, и итоговый массив города добавляете в общий массив.
Ответ написан
yellow79
@yellow79
Senior Software Engineer
Как вариант, воспользоваться группировкой и правильной комбинацией функций типа json_arrayagg и json_object
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы