![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Co do tematu drzew to można go ciągnąć w nieskończoność - ale ja nie o tym. Mam zaimplementowaną klasę która buduje mi drzewo na podstawie danych z bazy. I nie jest problemem wyświętlić te dane w postaci zagnieżdzonej listy - ale albo za dużo pracuje, albo nie mogę sobie poradzić z przekopiowaniem tej listy do wielwymiarowej tablicy (budowanej dynamicznie). Chcę w rezultacie osiągnąć coś takiego:
Dodam jak wyświetlam sobie to w postaci listy HTML
Jak sami widzicie prostą rekurencją mogę to bez problemu osiągnąć dzieki wykorzystaniu kilku metod obiektu tree. Pytanie jak korzystając z tych metod stworzyć dynamicznie tablicę jak powyższa. Z góry dzieki za podpowiedzi. pozdrawiam anas Ten post edytował anas 11.07.2006, 19:43:49 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 14.05.2005 Skąd: Pasikurowice (koło Wrocławia) Ostrzeżenie: (0%) ![]() ![]() |
Cytat Problemem jest to ze ciezko jest "dynamicznie" odwolywac sie do x kluczy np O ile dobrze rozumiem w czym rzecz to... własnie za pomocą referencji da się to załatwić. Swego czasu wyświetlałem iteracyjnie (bez rekurencji) drzewko w postaci wielowymiarowej tablicy i odwołanie do odpowiedniej "gałęzi" można zapisywać $aTree['root']['node1']['node2'] [...]dostanie sie do tych kluczy bez pomocy eval jest chyba nie mozliwe. W tym przypadku musisz podawac referecje wskazujaca na odpowiedni klucz w tablicy do ktorego zostana przypisane kolejne dzieci. (gdzie $branch to gałąź, na której się teraz znajdujemy). Można pójść nawet dalej i utworzyć tablicę takich referencji. Wszystko bez użycia eval(). Natomiast sam sposób z wielowymarową tablicą jest - tak mi się wydaje - grubo przekombinowany. Do samego wyświetlania drzewka (iteracyjnie) wystarczy tablica z zapisaną głębokością, np.
Z rekurencji nie zawsze warto i w zasadzie nie zawsze można skorzystać - kiedyś potrzebowałem plugin do Smarty, który wyświetli drzewko, a ponieważ chciałem mieć blok parsowany na każdym węźle ("liściu"), funkcja musiała działać iteracyjnie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 13:30 |