Funkcja rekurencyjna menu PHP
Mam bardzo podobną sytuację do tego posta
PHP: menu zagnieżdżone z funkcją rekurencyjną, rozwiń tylko niektóre węzły (nie wszystkie drzewa)
i potrzebuję pomocy ...
Oto (częściowa) zawartość mojej zmiennej $ menuJSONArray (używanej podczas wywoływania funkcji):
Array
(
[0] => Array
(
[Menu_IDX] => 1
[Order] => 1
[Name] => History
[Parent] =>
[Path] => History
[Link] =>
)
[1] => Array
(
[Menu_IDX] => 2
[Order] => 25
[Name] => Review
[Parent] =>
[Path] => Review
[Link] => Review
)
[2] => Array
(
[Menu_IDX] => 3
[Order] => 35
[Name] => Past Medical History
[Parent] =>
[Path] => Past Medical History
[Link] => Past Medical History
)
[3] => Array
(
[Menu_IDX] => 4
[Order] => 45
[Name] => Item 1
[Parent] => 0
[Path] => Item 1
[Link] => Item 1
)
[4] => Array
(
[Menu_IDX] => 5
[Order] => 55
[Name] => Item 2
[Parent] => 0
[Path] => Item 2
[Link] => Item 2
)
[5] => Array
(
[Menu_IDX] => 6
[Order] => 65
[Name] => Item 3
[Parent] => 0
[Path] => Item 3
[Link] => Item 3
)
)
i tak dalej...
Używam poniższej funkcji, ale utknąłem w pętli na pierwszym elemencie. Naprawdę potrzebuję pomocy w owinięciu mojego mózgu wokół tej funkcji. Dziękuję wszystkim z wyprzedzeniem, ta społeczność się rozpada!
///RECURSIVE MENU
function recursive($parent, $array) {
$has_children = false; //set value of has children to false by default
foreach($array as $key => $value) { //loop through the array as key-value pairs
if ($value['Parent'] == $parent) { //if the value of Parent field is equal to parent variable
if ($has_children === false && $parent) { //if children is false but parent is not null, this is a sub item
$has_children = true; //children is true
echo '<ul>' ."\n"; //create parent menu ul
} //otherwise just create the item
echo '<li>' . "\n"; //create li for parent menu item
echo '<a href="'.$value['Path'].'">' . $value['Name'] . '</a>' . " \n"; //create link for menu item
recursive($key, $array); //create sub menu
echo "</li>\n"; //end parent menu item
}
}
if ($has_children === true && $parent) echo "</ul>\n"; //end parent menu
}
?>
<?php echo recursive(0, $menuJSONArray); ?></ul>
W zamian otrzymuję:
<ul>
<li>
<a href="History">History</a>
<li>
<a href="History">History</a>
<li>
<a href="History">History</a>
<li>
<a href="History">History</a>
<li>
<a href="History">History</a>
<li>
<a href="History">History</a>
Nie mogę wydostać się z tej pętli. Dzięki!!
P.S. Nie interesuje mnie zwijanie drzewa itp. Z przywoływanego postu, ponieważ będę obsługiwał to za pomocą jquery i css. Po prostu nie mogę uzyskać właściwego wyjścia składni menu.