- Уровень 1
- Подуровень 1.1
- Подуровень 1.2
- Подуровень 1.3
- Уровень 2
- Подуровень 2.1
- Подуровень 2.2
- Уровень 3
- Подуровень 3.1
- Подуровень 3.1.1
- Подуровень 3.1.2
- Подуровень 3.2
- Подуровень 3.1.1
- Подуровень 3.1.2
- Подуровень 3.1
Предположим, все наши данные хранятся в массиве вида:
PHP код:
<?php
Array = array(
array('text' => 'Уровень 1', 'id' => 1, 'parent_id' => 0),
array('text' => 'Подуровень 1.1', 'id' => 2, 'parent_id' => 1),
array('text' => 'Подуровень 1.2', 'id' => 3, 'parent_id' => 1),
array('text' => 'Подуровень 1.3', 'id' => 4, 'parent_id' => 1),
array('text' => 'Уровень 2', 'id' => 5, 'parent_id' => 0),
array('text' => 'Подуровень 2.1', 'id' => 6, 'parent_id' => 5),
array('text' => 'Подуровень 2.2', 'id' => 7, 'parent_id' => 5),
array('text' => 'Уровень 3', 'id' => 8, 'parent_id' => 0),
array('text' => 'Подуровень 3.1', 'id' => 9, 'parent_id' => 8),
array('text' => 'Подуровень 3.1.1', 'id' => 10, 'parent_id' => 9),
array('text' => 'Подуровень 3.1.2', 'id' => 11, 'parent_id' => 9),
array('text' => 'Подуровень 3.2', 'id' => 9, 'parent_id' => 8),
);
?>
Тогда для получения иерархического дерева из такого массива, содержащего собственно сам текст, уникальный идентификатор и идентификатор родителя, добавьте функцию get_tree() на страничку своего сайта:
PHP код:
<?php
function get_tree($tree, $parent_id) {
$html = '';
foreach ($tree as $row) {
if ($row['parent_id'] == $parent_id) {
$html .= '<li>' . "\n";
$html .= ' ' . $row['text'] . "\n";
$html .= ' ' . get_tree($tree, $row['id']);
$html .= '</li>' . "\n";
}
}
return $html ? '<ul>' . $html . '</ul>' . "\n" : '';
}
?>
Теперь для вывода иерархического дерева используйте echo get_tree($tree, 0);
Как видите, ничего сложного в построение иерархического дерева нет, главное правильно записать в массив идентификаторы родителей для каждого элемента (0 для корневых элементов).