Автор Тема: Алгоритъм за йерархия в масив  (Прочетена 1312 пъти)

koleto

  • Напреднали
  • *****
  • Публикации: 52
  • Distribution: Ubuntu
  • Window Manager: Gnome
    • Профил
    • WWW
Здравейте. Опитвам се да направя дървовидно меню за едно мое приложение, но имам проблем. Категориите се пазят в база от данни. Още в началото на поста искам да се извиня, че не мога да ползвам точните термини за нещата който пиша, но все още се уча. Искам да представя, йерархия от данни в масив(имам предвид да се получи дърво). След като ги взема от базата данни имам следния масив в който се пазят категориите:

Код
GeSHi (PHP):
  1. $array = array();
  2. $array[1] = array('parent' => 0, 'title' => 'I am node 1.');
  3. $array[2] = array('parent' => 1, 'title' => 'I am node 2.');
  4. $array[3] = array('parent' => 1, 'title' => 'I am node 3.');
  5. $array[4] = array('parent' => 0, 'title' => 'I am node 4.');
  6. $array[5] = array('parent' => 2, 'title' => 'I am node 5.');
  7. $array[5] = array('parent' => 2, 'title' => 'I am node 6.');

Трябва да се получи нещо такова:
  • I am node 1.
    • I am node 2.
      • I am node 5.
      • I am node 6.
    • I am node 3.
  • I am node 4.

В индекса parent се съдържат идентификатор, който показва номера на родителския елемент. Сега проблема идва при опита ми да напиша алгоритъм който да ги подрежда по този начин. Пробвах да го измисля сам, написах го и съм обеден че е правилно, но не работи. Явно самото ми мислене е грешно, затова искам да ви помоля за помощ, поне да ми хвърлите някой материал който да прочета и да си реша проблема. Мерси предварително.




Активен

Поражение не съществува, докато човек не се признае за победен!

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: Алгоритъм за йерархия в масив
« Отговор #1 -: Sep 12, 2009, 02:59 »
Прочети първо тази статия (няма значение, че е MySQL): http://dev.mysql.com/tech-resources/articles/hierarchical-data.html и си избери DB дизайн. Показано е и за двата дизайна как се изършват най-често срещаните запитвания към базата.
« Последна редакция: Sep 12, 2009, 03:04 от VladSun »
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

koleto

  • Напреднали
  • *****
  • Публикации: 52
  • Distribution: Ubuntu
  • Window Manager: Gnome
    • Профил
    • WWW
Re: Алгоритъм за йерархия в масив
« Отговор #2 -: Sep 13, 2009, 15:19 »
Колко лесно било. VladSun мерси много.
Активен

Поражение не съществува, докато човек не се признае за победен!