![]() |
![]() ![]() |
![]() |
![]()
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
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
wbrew pozorom nie jest to latwa czynnosc...
Sam kiedys sie meczylem i to naprawde dlugo. Problemem jest to ze ciezko jest "dynamicznie" odwolywac sie do x kluczy np $aTree['root']['node1']['node2'] o ile wygenerowanie tablicy z tymi kluczami tzn array( root, node1, node2 ); Nie jest problemem (zalezy od typu drzewek) to 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. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 548 Pomógł: 2 Dołączył: 19.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
witam
RecursiveIterator i sprawdzanie czy is_array ![]() pozdrawiam -------------------- Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
@anas - uzyj eval
--- edit --- Sorrka nie zauwazylem ze hwao juz to podpowiedzial Ten post edytował bigZbig 14.07.2006, 11:42:51 -------------------- bigZbig (Zbigniew Heintze) | blog.heintze.pl
|
|
|
![]()
Post
#5
|
|
![]() 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. -------------------- just yuppie. | QueenOnline.pl
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
@.johnny - potrzebujesz plugin do Smarty wyswietlajacy rekurencyjnie strukture drzewiasta? Mowisz i masz "Rekurencja w Smarty".
-------------------- bigZbig (Zbigniew Heintze) | blog.heintze.pl
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 14.05.2005 Skąd: Pasikurowice (koło Wrocławia) Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za link, widziałem ten artykuł już wcześniej. Odrobinę mi się nie podoba - lubię mieć idealnie "czyste" szablony, z jak najmniejszą iloscią instrukcji (co niestety nie zawsze da się osiągnąć). Teraz wystarcza mi zapis:
Kod {tree from=$tree item=item} {$item} {/tree} Zresztą to bez znaczenia. Jakiś czas temu zaimplementowałem sobie obsługe drzewka opartego o SQL nie używając w ogóle rekurencji - po prostu nie było takiej potrzeby. -------------------- just yuppie. | QueenOnline.pl
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
lubię mieć idealnie "czyste" szablony @.johnny wybacz, ale idealnie "czysty" szablon wyglada tak -------------------- bigZbig (Zbigniew Heintze) | blog.heintze.pl
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 045 Pomógł: 5 Dołączył: 8.11.2004 Skąd: trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
Hm, ale czy na pewno celowe jest ładowanie
drzewa do takiej zagnieźdzonej tablicy? Bo wydaje mi się że wszystko bardzo łatwo można osiągnać korzystając z formy danych takich jak w bazie, czyli w postaci gdzie każdy element ma wskaźnik id_ojca. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.06.2025 - 16:02 |