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