
Doplnění PHP kódu
Ahoj, na internetu jsem našel takový PHP kód, sice funguje parádně ale potřeboval bych ho trochu poopravit :(
PHP pole
$menu = array(
array('id'=>1,'title'=>'Menu 1', 'parent_id'=>null),
array('id'=>2,'title'=>'Sub 1.1', 'parent_id'=>1),
array('id'=>3,'title'=>'Sub 1.2', 'parent_id'=>1),
array('id'=>4,'title'=>'Sub 1.3', 'parent_id'=>1),
array('id'=>5,'title'=>'Menu 2', 'parent_id'=>null),
array('id'=>6,'title'=>'Sub 2.1', 'parent_id'=>5),
array('id'=>7,'title'=>'Sub Sub 2.1.1', 'parent_id'=>6),
array('id'=>8,'title'=>'Sub 2.2', 'parent_id'=>5),
array('id'=>9,'title'=>'Menu 3', 'parent_id'=>null),
);
PHP kód
function has_children($rows,$id) {
foreach ($rows as $row) {
if ($row['parent_id'] == $id)
return true;
}
return false;
}
function build_menu($rows,$parent=0)
{
$result = "<ul>";
foreach ($rows as $row)
{
if ($row['parent_id'] == $parent){
$result.= "<li>{$row['title']}";
if (has_children($rows,$row['id']))
$result.= build_menu($rows,$row['id']);
$result.= "</li>";
}
}
$result.= "</ul>";
return $result;
}
echo build_menu($menu);
Html výstup
<ul>
<li>Menu 1<ul>
<li>Sub 1.1</li>
<li>Sub 1.2</li>
<li>Sub 1.3</li>
</ul></li>
<li>Menu 2<ul>
<li>Sub 2.1<ul>
<li>Sub Sub 2.1.1</li>
</ul></li>
<li>Sub 2.2</li>
</ul></li>
<li>Menu 3</li>
</ul>
Pro lepší orientaci jen výstup
Menu 1
Sub 1.1
Sub 1.2
Sub 1.3
Menu 2
Sub 2.1
Sub Sub 2.1.1
Sub 2.2
Menu 3
Potřeboval bych poopravit tento kód, aby byl výstup takový (pole musí být zachováno přesně tak jak je)
Požadovaný výstup
Menu 1
Menu 1/Sub 1.1
Menu 1/Sub 1.2
Menu 1/Sub 1.3
Menu 2
Menu 2/Sub 2.1
Menu 2/Sub 2.1/Sub Sub 2.1.1
Menu 2/Sub 2.2
Menu 3
Může nějaký profesionál co tomu rozumí poradit? Já to zkoušel ale nejsem programátor a tohle je vážně nad moje síly :( Děkuji za případnou pomoc.
V PHP sice nedělám, ale zkusil bych něco takového:
Ahoj, díky za tip, ale to vypisuje úplně to stejný :(
Musíš tam, kde se volá build_menu dosadit za parametr prefix "/"
Takto?
Asi jo. Jen ty máš možnost to vyzkoušet a vidět výsledek.