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

Beitrag lesen

Ok, ich hab schon gesehen, dass ich auch in dem Array noch Fehler hatte.
Ich habe jetzt hoffentlich erstmal alle "groben" Fehler beseitigt.

$this->arrMenuItems = array(  
array('leftkey'=> '0',  
'rightkey'=> '5',  
'name'=> 'foobar'),  
array(	'leftkey'=> '6',  
'rightkey'=> '11',  
'name'=>'hauptmenu punkt1'),  
array(	'leftkey'=> '7',  
'rightkey'=> '8',  
'name'=>'submenu2 punkt1'),  
array(	'leftkey'=> '9',  
'rightkey'=> '10',  
'name'=>'submenu2 punkt2'),  
array(	'leftkey'=> '12',  
'rightkey'=> '15',  
'name'=>'hauptmenu punkt2')  
);  
  
$counter = count($this->arrMenuItems);  
for($i = 0; $i < $counter; $i++){  
	echo 'Name: '.$this->arrMenuItems[$i]['name']." - Level: ";  
	$arrParent = array_pop($this->arrStack);  
	// Elter gefunden  
	if($this->arrMenuItems[$i]['leftkey']+1 < $this->arrMenuItems[$i]['rightkey']){  
		// Elter hat Kind  
		if(isset($this->arrMenuItems[$i+1]) && $this->arrMenuItems[$i+1]['rightkey'] < $this->arrMenuItems[$i]['rightkey']){  
			echo count($this->arrStack)." \n";  
			$this->arrStack[] = $arrParent;  
			$this->arrStack[] = $this->arrMenuItems[$i];  
			// Elter hat kein Kind  
		}else{  
			if($this->arrMenuItems[$i]['leftkey'] > $arrParent['rightkey']){  
				$this->arrStack[] = $arrParent;  
				while($this->arrMenuItems[$i]['rightkey'] > $arrParent['rightkey'] && count($this->arrStack) != 0){  
					$arrParent = array_pop($this->arrStack);  
				}  
				echo count($this->arrStack)." \n";  
			}  
		}  
		continue;  
	}  
	// Blatt gefunden  
	if($this->arrMenuItems[$i]['leftkey']+1 == $this->arrMenuItems[$i]['rightkey'] && $this->arrMenuItems[$i]['rightkey'] < $arrParent['rightkey']){  
		echo count($this->arrStack)." \n";  
		$this->arrStack[] = $arrParent;  
		continue;  
	}  
	echo 'hund';  
}

Scheint wieder alles zu stimmen inklusive Lücken, kinderlosen Eltern, auf- und absteigen.
Bitte lass diesmal alles richtig sein! :D