![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 190 Pomógł: 1 Dołączył: 20.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Zalozmy, ze mamy w tabeli bazy danych proste drzewko. Kazdy wiersz ma 3 pola: id, parent_id i name. Odczytalismy te rekordy z bazy, mamy je w dwuwymiarowej tablicy asocjacyjnej i chcemy wyswietlic w formie drzewka: Kod level1_1 level2_1 level3_1 level3_2 level3_3 level2_2 level2_3 level1_2 level2_4 level1_3 Drzewko moze miec dowolna ilosc poziomow zaglebienia. Jesli sie uzywa rekurencji to proste. Ale czy da sie to zrobic iteracyjnie? A jesli sie da, to jak? Zakladam, ze jesli sie da, to bedzie wydajniej. Czy sie nie myle? Ten post edytował marcini82 13.09.2007, 12:37:51 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 190 Pomógł: 1 Dołączył: 20.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Oczywiscie chodzilo o rekurencje w samym php. Przy wysylaniu zapytan to bylaby przesada (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Musze przyznac, ze odwaliles kawal dobrej roboty z tym przykladem. Chociaz obszernosc tego kodu nieco utrudnia dotarcie do samego sposobu eliminacji rekurencji... Musze to dokladniej przeanalizowac. Zdziwily mnie te wyniki. Co prawda rekurencja w php to troche co innego niz w jezykach nizszego poziomu, ale mimo wszystko spodziewalem sie jednak spadku wydajnosci. Zrobilem jeszcze taki tescik:
Wyglada na to, ze php wyklada sie jesli ilosc wywolan rekurencyjnych przekracza 1400-1500. W sumie to dosc duzo. Daloby sie spore drzewo wyrysowac (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 02:22 |