phpbar.de logo

Mailinglisten-Archive

[php] rekursive Funktion und Effizienz?

[php] rekursive Funktion und Effizienz?

Dennis Beyer php_(at)_phpcenter.de
Thu, 13 Jun 2002 12:45:52 +0200


Hi Leute,

hab mir einen Kategoriebaum angelegt, der Aufbau ist
dieser:

+--------+----------+----------+----------+
| catId  | parentId | catName  | catDepth |
+--------+----------+----------+----------+


Dadurch m�chte ich beliebig (naja fast) viele Kategorien und
beliebige Kategorietiefen speichern.

Soweit so gut. Wenn ich jetzt den Kategoriebaum
komplett auslesen will, mache ich das mit einem select
statement das alle Kategorien in Arrays einliest. (Ich
wollte nicht x select abfragen machen, klar)

dazu hab ich mir dann eine rekursive Funktion
geschrieben, die die Arrays durchforstet.

Das auslesen dieses Kategoriebaumes mit ca 120
Eintr�ge mit einer Tiefe von 3 dauert 2.5 sec. das
scheint mir doch ein bischen lange.

Meine Frage nun wie kann man das ganze effizienter
machen? keine Rekusrion verwenden? (dann w�ren aber
beliebige Tiefen nicht m�glich)

Dennis



$catIndex ist das Array das einfach eine Nummerierung
1-x enth�lt
Die anderen arrays wie sie Spaltennamen in der DB



function showCategory($ID) {

    for($i = 0 ; $i < sizeof($catIndex) ; $i++){                                  
        if($catId[$i] == $ID) {                                                   
            //einr�cken                                                           
            for($k=0;$k<$catDepth[$i];$k++) {                                     
            echo "&nbsp;";
            }                                                                     
                                                                                  
            echo "id: $catId[$i] $catName[$i]<br>";
                                                                                  
            for($j = 0 ; $j < sizeof($catIndex) ; $j++){                          
                if($catParentId[$j] == $ID) {                                     
                    showCategory($catId[$j]);
                }                                                                 
                                                                                  
            }                                                                     
        }                                                                         
    }                                                                             
}                                                                                 


php::bar PHP Wiki   -   Listenarchive