Peter L.: Array mit Nested Set Werten zu Html-Liste/Menu verarbeiten

Beitrag lesen

Hallo!

Also ich hab mir jetzt ein paar Tage den Kopf zerbrochen aber ich kriege es absolut nicht hin.
Ich durchlaufe das "lückenhafte" Array und das einzige was ich hinkriege ist, dass ich eine Ebene tiefer muss wenn der left- oder der right-Wert kleiner als der right-Wert vom letzten Elter ist. Nach meinen Fehlversuchen muss ich mir auch eingestehen, dass ich überhaupt nicht weiß wie ich da mit einer Rekursion ansetzen muss. :/

Die Liste lasse ich erstmal weg weil ich glaube, dass es erstmal übersichtlicher ist, wenn ich nur die Ebene ausgebe.

class foo {  
  
// Array mit nested set Werten  
private $arrMenuItems = array();  
	  
private $intLevel = null;  
	  
private $intParentLeft = false;  
private $intParentRight = false;  
  
// Array mit Einträgen setzen  
public function __construct($arrItems){  
    $this->arrMenuItems = $arrItems;  
}  
  
// Level der Einträge ermitteln  
public function foo(){  
    foreach($this->arrMenuItems as $strKey=>&$arrMenuItem){  
        if($this->intParentLeft === false) {  
            $this->intParentLeft = $arrMenuItem['leftkey'];  
            $this->intParentRight = $arrMenuItem['rightkey'];  
            $this->intLevel = 0;  
            $arrMenuItem['level'] = $this->intLevel;  
            continue;  
        }  
		  
        if($arrMenuItem['leftkey'] < $this->intParentRight){  
            $this->intParentLeft = $arrMenuItem['leftkey'];  
            $this->intParentRight = $arrMenuItem['rightkey'];  
            $this->intLevel++;  
            $arrMenuItem['level'] = $this->intLevel;  
            continue;  
        }  
    }  
    print_r($this->arrMenuItems);  
}

Und das ist eigentlich auch schon alles was ich zum laufen gekriegt habe. Wie du siehst, ist es leider nicht sehr viel :(
Wie schon am Anfang gesagt, weiß ich überhaupt nicht wo ich in eine Rekursion springen muss und wann wieder zurück und wie dann weiter... puh, irgendwann habe ich bei deiner Erklärung den Faden verloren.

Könntest du mir nochmal einen Tipp geben? Mir platzt dabei irgendwie der Kopf.