За последние 24 часа нас посетили 58724 программиста и 1812 роботов. Сейчас ищут 835 программистов ...

Вывод дерева

Тема в разделе "PHP для новичков", создана пользователем bxN5, 16 дек 2010.

  1. bxN5

    bxN5 Активный пользователь

    С нами с:
    15 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Помогите с выводом деревьев (parent_id). Вообщем на выходе я получаю массив такого вида
    кусок:
    PHP:
    1. [3] => Array
    2.         (
    3.             [0] => 4
    4.             [id] => 4
    5.             [1] => Корневая 4
    6.             [name] => Корневая 4
    7.             [childs] => Array
    8.                 (
    9.                     [0] => Array
    10.                         (
    11.                             [0] => 5
    12.                             [id] => 5
    13.                             [1] => Подкатегория к 4
    14.                             [name] => Подкатегория к 4
    15.                         )
    16.  
    17.                     [1] => Array
    18.                         (
    19.                             [0] => 6
    20.                             [id] => 6
    21.                             [1] => Подкатегория к 4 2
    22.                             [name] => Подкатегория к 4 2
    23.                             [childs] => Array
    24.                                 (
    25.                                     [0] => Array
    26.                                         (
    27.                                             [0] => 8
    28.                                             [id] => 8
    29.                                             [1] => Подкатегория к 4 222
    30.                                             [name] => Подкатегория к 4 222
    31.                                         )
    32.  
    33.                                 )
    34.  
    35.                         )
    36.  
    37.                     [2] => Array
    38.                         (
    39.                             [0] => 9
    40.                             [id] => 9
    41.                             [1] => Подкатегория к 4 3
    42.                             [name] => Подкатегория к 4 3
    43.                         )
    44.  
    45.                 )
    46.  
    47.         )
    И так вложенных массивов может быть бесконечно, подскажите как его обработать, что бы на выходе получить древовидный хтмл список?
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    PHP:
    1. <?php
    2.  $arr = array(
    3.    array(
    4.          'name'  => '1',
    5.          'childs' => array(
    6.              array(
    7.                  'name' => '1.1'
    8.              ),
    9.              array(
    10.                  'name'  => '1.2',
    11.                  'childs' => array(
    12.                      array(
    13.                          'name' => '1.2.1'
    14.                      ),
    15.                      array(
    16.                          'name' => '1.2.2'
    17.                      )
    18.                  )
    19.              )
    20.          )
    21.      ),
    22.      array(
    23.          'name'  => '2',
    24.          'childs' => array(
    25.              array(
    26.                  'name' => '2.1'
    27.              ),
    28.              array(
    29.                  'name'  => '2.2',
    30.                  'childs' => array(
    31.                      array(
    32.                          'name' => '2.2.1'
    33.                      ),
    34.                      array(
    35.                          'name' => '2.2.2'
    36.                      )
    37.                  )
    38.              )
    39.          )
    40.      )
    41.  );
    42.  
    43.  function buildTree($arr, $root=''){
    44.      $childs = '';
    45.      foreach ($arr as $key => $val) {
    46.          $childs  = (isset($val['childs']))?buildTree($val['childs'], $childs):'';
    47.          $root    .= "<li>{$val['name']} $childs</li>";
    48.          $childs  = '';
    49.      }
    50.      return "<ul>".$root."</ul>";
    51.  }
    52.  
    53. //волшебство :D
    54.  echo buildTree($arr);
     
  3. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
  4. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Volt(220)
    сделал бы сайт для либы, несколько адаптеров, теорию, картинки, примеры вывода для разных шаблонизаторов, блек джек, шлюх
    все в одном месте, было бы круто
     
  5. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Padaboo
    Тогда уж сразу для всего фреймворка. И в принципе сайт есть на google коде. Сделать к нему вики и все будет.
    Но это еще код надо хорошенько причесать, да и 5.3 ветку сделать. А времени нет.
     
  6. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    5.3 ветку делать уже не надо. Уже пора его основным юзать.