Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Drzewo znalezienie gałęzi
atomp3
post 6.04.2010, 09:06:51
Post #1





Grupa: Zarejestrowani
Postów: 126
Pomógł: 1
Dołączył: 31.03.2006

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
alegorn
post 6.04.2010, 09:49:02
Post #2





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
atomp3
post 6.04.2010, 10:06:55
Post #3





Grupa: Zarejestrowani
Postów: 126
Pomógł: 1
Dołączył: 31.03.2006

Ostrzeżenie: (0%)
-----


ciekawe...

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

szkoda ze wczesniej nie spytalem.
Go to the top of the page
+Quote Post
alegorn
post 6.04.2010, 12:07:15
Post #4





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
atomp3
post 7.04.2010, 07:21:05
Post #5





Grupa: Zarejestrowani
Postów: 126
Pomógł: 1
Dołączył: 31.03.2006

Ostrzeżenie: (0%)
-----


Nie będzie to duże drzewko, dlatego proszę o porade jak zrobić w pierwszym poście
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 01:42