функция сам себя() или менюшка
вроде понятно. просто менюшка, каждый новый элемент может быть вставлен в конце масива при этом не имеет значения где в меню он должен распологаться( в смысле под чем)
проблема в следующем.
функция must_open() работает не правильно
она сжерает низ меню
скажем если убрать из функции make_tree() поля с '*del*'
прог распечатает все элементы ( элементов нажатого до корня ну типа как в проводнеке но проще)
PHP:
// база меню
$menu=array(
1=>array( "name"=>"level_1" , "wurzel"=>"0"),
2=>array( "name"=>"level_2" , "wurzel"=>"0"),
3=>array( "name"=>"level_21" , "wurzel"=>"2"),
4=>array( "name"=>"level_22" , "wurzel"=>"2"),
5=>array( "name"=>"level_221" , "wurzel"=>"4"),
6=>array( "name"=>"level_222" , "wurzel"=>"4"),
7=>array( "name"=>"level_23" , "wurzel"=>"2"),
8=>array( "name"=>"level_3" , "wurzel"=>"0"),
9=>array( "name"=>"level_4" , "wurzel"=>"0"),
10=>array( "name"=>"level_5" , "wurzel"=>"0"),
11=>array( "name"=>"level_6" , "wurzel"=>"0"),
12=>array( "name"=>"level_7" , "wurzel"=>"0"),
13=>array( "name"=>"level_8" , "wurzel"=>"0"),
14=>array( "name"=>"level_9" , "wurzel"=>"0"),
15=>array( "name"=>"level_91" , "wurzel"=>"14"),
16=>array( "name"=>"level_92" , "wurzel"=>"14")
);
// функция скрытия
function must_open($arr,$index,$m_open)
{
if ($arr[$index]["wurzel"]==$m_open || must_open($arr,$index,$arr[$m_open]["wurzel"]) || $arr[$index]["wurzel"]==0)
{
return true;
}
else
{
return false;
}
}
// функция распечатки
function make_tree($arr,$zeile,$level,$open)
{
for ($i=1; $i<17; $i++) // на длину масива
{
if ($arr[$i]["wurzel"]==$zeile) // у каждого элемента ищем под элемент
{
$abst="";
if(must_open($arr,$i,$open)){ // *del*надо ли его печатать?
for ($a=1; $a<=$level; $a++)// и если да делаем ратояние
{
$abst.="--";
}
echo "<a href='menu.php?opene=".$i."'>".$abst.$arr[$i]["name"]."</a><br>";
make_tree($arr,$i,$level+1,$open);// и находим под элементы
}//*del*
}
}
}
if (!$opene)
$opene="0";
make_tree($menu,0,0,$opene);
вроде понятно. просто менюшка, каждый новый элемент может быть вставлен в конце масива при этом не имеет значения где в меню он должен распологаться( в смысле под чем)
проблема в следующем.
функция must_open() работает не правильно
она сжерает низ меню
скажем если убрать из функции make_tree() поля с '*del*'
прог распечатает все элементы ( элементов нажатого до корня ну типа как в проводнеке но проще)