У меня возникли проблемы с созданием многомерного объекта JSON в PHP.Создание многомерного объекта json из базы данных
базаМой Postgresql выглядит следующим образом:
Id Name Parent
1 Active NULL
2 Passive NULL
3 Fixed 1
4 Dynamic 3
5 Taxes 2
6 Fair 2
...
Родитель столбец связан с идентификатором в первом столбце
Что я хочу сделать это:
[
{
"name": "Active",
"children": [
{
"name": "Fixed",
"children": [
{
"name": "Dynamic",
"children": NULL
}
]
}
]
},
{
"name": "Passive",
"children": [
{
"name": "Taxes",
"children": NULL
},
{
"name": "Fair",
"children": NULL
}
]
}
]
Так в первую очередь i FETCH
данные из нашей базы данных с
$result = fetchAll(PDO::FETCH_OBJ); // fetches every row in an object
Я мог бы отправить этот результат во внешний интерфейс (javascript) и преобразовать эти данные в JSON, но затем я отправлю им имена столбцов, и я не думаю, что это хорошая идея в условиях безопасности.
Прежде всего, я хочу сделать верхний уровень файла JSON. С помощью этой темы Object to array in PHP я умудряюсь положить, что вместе:
$mainArray = [];
foreach ($result as $value) {
if ($value['Parent'] === NULL) {
$object = new stdClass();
$object->name = $value['Name'];
$object->children = [];
$mainArray[] = $object;
}
}
Это мой результат:
[
{
name: "Actief",
children: [ ]
},
{
name: "Passief",
children: [ ]
}
]
Но я застрял при добавлении детей к правильному родителю. Я просто не могу найти, как это сделать.
мне нужно сделать что-то вроде этого:
Добавить Fixed
в Object
где Object->Name
является 1 = Active
.
Thx! Он работает на 75%, потому что, как вы можете видеть в моем примере, у некоторых детей может быть ребенок, и у них могут быть дети и ... Вы знаете, куда я хочу пойти, это может пойти в разы. Теперь он дает «Все» ребенка на одном уровне. – Peter
Хорошо. Обновлен мой ответ с рекурсией. –
Приятно, вот и все! большое спасибо – Peter