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