Hey!
Weil das ein Wurzel-Blatt ist. Du prüfst bei Blättern auf das Eltern-Element. Da muss noch der Fall, dass der Stack leer ist, berücksichtigt werden.
Soll ich so tun?
$this->arrMenuItems = array(
array( 'leftkey'=> '0',
'rightkey'=> '5',
'name'=> 'foobar'),
array( 'leftkey'=> '6',
'rightkey'=> '11',
'menuName'=>'hauptmenu',
'name'=>'hauptmenu punkt1'),
array( 'leftkey'=> '7',
'rightkey'=> '10',
'menuName'=>'submenu2',
'name'=>'submenu2 punkt1'),
array( 'leftkey'=> '8',
'rightkey'=> '9',
'menuName'=>'submenu2',
'name'=>'submenu2 punkt2'),
array( 'leftkey'=> '14', // oder z.B. 12
'rightkey'=> '15',
'menuName'=>'hauptmenu',
'name'=>'hauptmenu punkt2'),
array( 'leftkey'=> '16', // oder z.B. 18
'rightkey'=> '19',
'menuName'=>'test',
'name'=>'hauptmenu punkt3')
);
$counter = count($this->arrMenuItems);
for($i = 0; $i < $counter; $i++){
echo 'Name: '.$this->arrMenuItems[$i]['name']." - Level: ";
$arrParent = end($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[] = $this->arrMenuItems[$i];
// Elter hat kein Kind
}else{
if($this->arrMenuItems[$i]['leftkey'] > $arrParent['rightkey']){
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']){
// Blatt hat Elter
if($this->arrMenuItems[$i]['rightkey'] < $arrParent['rightkey']){
echo count($this->arrStack)."\n";
// Blatt ist Elternlos und hat keine Kinder
}else{
$this->arrStack = array();
echo count($this->arrStack)."\n"; // sollte wohl immer 0 sein
}
continue;
}
echo 'hund';
}
Scheint mal wieder alles zu funktionieren.