Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Drzewo znalezienie gałęzi
Forum PHP.pl > Forum > Przedszkole
atomp3
Witam

Mam taką strukturę drzewa:

1. Jak znaleźć ostatnią gałąź
2. Jak znaleźć gałąź nad nią

Np potrzebuje dodać usun dla poj galezi natomiast nad nia usun wszystkie podlegle.

  1. function createTree($array, $currentParent, $currLevel = 0, $prevLevel = -1) {
  2.  
  3. foreach ($array as $categoryId => $category) {
  4.  
  5. if ($currentParent == $category['parent_id']) {
  6.  
  7. if ($currLevel > $prevLevel) echo " <ul id='browser' class='treeview'> ";
  8.  
  9. if ($currLevel == $prevLevel) echo " </li> ";
  10.  
  11. echo '<li id="'.$categoryId.'"><span>'.$category['name'].'</span>';
  12.  
  13. if ($currLevel > $prevLevel) { $prevLevel = $currLevel; }
  14.  
  15. $currLevel++;
  16.  
  17. $this->createTree ($array, $categoryId, $currLevel, $prevLevel);
  18.  
  19. $currLevel--;
  20. }
  21.  
  22. }
  23.  
  24. if ($currLevel == $prevLevel) echo " </li> </ul> ";
  25.  
  26. }


Dzieki
alegorn
drzewka.
mowiac szczerze - dobre oprogramowanie drzewa jest pewnym wyzwaniem dla programisty.

tak naprawde wszystko zalezy od tego, w jaki sposob obslugujesz drzewo, jaka jest jego struktura(tablica? obiekt?), gdzie je przetrzymujesz itp..

jesli masz plaska strukture - to lepiej zapomnij, poczytaj o innych rozwiazaniach, przemysl to.
chodzi o to ze w ten sposob bedziesz musial uzywac wielu petli, co jest strasznie nie ekonomiczne.

najlepsze dla ciebie bedzie : mysql dev
zapewniajac odpowiednia strukture bazy danych - tego typu operacje robisz na poziomie bazy danych..


tak naprawde sposobow jest wiele, i kazdy inny, zalezy od tego co masz i czego potrzebujesz...

j.
atomp3
ciekawe...

najgorsze ze bardzo duzo pracy wlozylem juz zeby obsluzyc to drzewo i wbudowac w aplikacje...

szkoda ze wczesniej nie spytalem.
alegorn
czasem warto przemyslec temat czy nie warto by bylo na nowo przepisac pewne elementy.

przemysl czy czas jaki bedziesz potrzebowal by doprowadzic swoje rozwiazanie do szczesliwego konca nie bedzie dluzszy od zaimplementowania innego rozwiazania. warto robic sobie taki uczciwy bilans bo z doswiadczenia wiem, ze czesto brniemy bez sensu w wlasne rozwiazania..

robilismy ostatnio testy duzego (i zaawansowanego) drzewa, tak na ok 100 000(i wiecej) elementow. kazdy z tych elementow, mial sporo wlasciwosci itp.
korzystalismy z pewnej klasy, napisanej obiektowo, na oko - dosc sensownej w uzyciu.

przy malych drzewkach - bez zarzutu, jak obciazylismy duza iloscia danych - totalna klapa, czas wykonywania liczony w minutach!
zarzynalismy sie w petlach, itd...

wiec przepisujemy od nowa, kod jaki powstanie, bedzie w pewnym sensie zaprzeczeniem funkcjonalnosci wczesniejszego - tyle ze ma jeden cel, owo drzewko na kilkaset tys. wezlow i lisci - ma sie wykonywac w sensownym czasie..

wiec tak naprawde - zalezy co juz masz, i do czego to potrzebujesz...
jesli niebedzie obciazane duza iloscia danych - wtedy why not? olac optymalizacje, budujesz sobie klase, ktora mieli wszystko w kolejnych petlach winksmiley.jpg
ale jesli spodziewasz sie wiekszej ilosci danych - wteddy te wszystkie petle znakomicie sluza do wieszania...

pozdraw,
j.
atomp3
Nie będzie to duże drzewko, dlatego proszę o porade jak zrobić w pierwszym poście
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.