@link00

PHP. Как сформировать динамический многомерный массив?

В БД есть таблица категорий. Категории имеют иерархическую структуру. Вывести их в виде дерева echo-м li-шками - то просто (делаю с помощью рекурсии). Но вот как сформировать многомерный массив?

UPD
Пример.

Есть ТБД:

id | parent_id
2 | 1
3 | 1
4 | 2
5 | 2

На выходе должен получиться такой массив(передаю сам смысл, можно конечно оформить и по другому, напр, исп подмассивы 'childs', а также в реальном коде учесть корневую категорию):

$array = [
	0=>[
		'node'=>1,
		0=>['node'=>2, 0=>4, 1=>5],
		1=>3,
	],	
];


//т.е. каждый узел у которого есть ПОДкатегории представляет из себя Массив. Узел без категорий - просто значение. В данном случае 2-е категории содержат дочерние эл-ты/подкатегории, поэтому массива всего 2.
  • Вопрос задан
  • 1793 просмотра
Пригласить эксперта
Ответы на вопрос 1
kimono
@kimono
Web developer
Примерно так:
$sql = 'SELECT * FROM `categories`';
$stmt = DBH::PDO()->query($sql)->execute();
$data = [];
while ($row = $stmt->fetch(PDO::FETCH_ASSOC){
  $data[$row['parent']][$row['id']] = $row;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы