Все ленты — последние статьи

*Скрипт построения иерархического дерева

В данной теме мы рассмотрим скрипт для построения иерархического дерева. Данный скрипт будет основан на методе использования рекурсивной функции. Ниже приведен пример иерархического дерева.
  • Уровень 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

Предположим, все наши данные хранятся в массиве вида:

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 для корневых элементов).