phpbar.de logo

Mailinglisten-Archive

[php] Baumstruktur Mysql->Array (nicht Nested set Modell)

[php] Baumstruktur Mysql->Array (nicht Nested set Modell)

Norbert Pfeiffer norbert at itbw.de
Sam Nov 5 20:06:10 CET 2005


Hallo,

man heisst ja immer, dass rekursive Querys Resourcen fressen !
Deshalb bevorzuge ich die Variante, alles in einem Zug auszulesen
und mittels PHP mundgerecht zu machen. Und damit das auch Hand und
Fuss bekommt, habe ich Peters Loesung gegen die PHP-Variante um
die Wette laufen lassen:
- es muessen 12 Querys von MySQL beantwortet werden:   18,883 ms
- dagegen die einzelne Abfrage mit PHP-Nachbesserung:   2,514 ms
Denke, das sagt alles !

Ach-ja, hier ist die PHP-Funktion, welche auch gleich noch die
Strukturtiefe ermittelt, was eine Anzeige sehr vereinfacht:

function converter($ARR, $prnt=0, $dept=0) {
/*
 * - convertiert DB-Result in ein mehrdimensionales Array
 *   erwartet die folgende Struktur:
 *       Array (
 *              [0] => Array (
 *                            [0] => -- Parent-ID
 *                            [1] => -- Item-ID
 *                            [2] => -- Description
 *                            [3] => -- URL
 *                           )
 *              )
 *       $prnt=0, - Parent-Element (default = 0)
 *       $dept=0) - Tiefe des Baumes (default = 0)
 */
    global $maxD;
    $NEW = array();
    $X = 0;
    foreach($ARR as $AA) {
        if ($AA[0] == $prnt) {
            $maxD = ($dept > $maxD) ? $dept : $maxD;
            $NEW[$X] = array('dept'=>$dept, 'self'=>$AA[1], 'text'=>$AA[2],
'link'=>$AA[3]);
            $SU = converter($ARR, $AA[1], ($dept + 1));
            if (count($SU) > 0) {
                $NEW[$X][] = $SU;
            }
            $X++;
        }
    }
    return $NEW;
}


m. b. G. Norbert
_____________________
normal:  02682-966898
Notruf:  0163-3613642
---------------------
e.o.m.


php::bar PHP Wiki   -   Listenarchive