PHP Recursive Menüfunktion
Ich habe eine sehr ähnliche Situation wie dieser Beitrag
und ich brauche etwas Hilfe ...
Hier ist der (teilweise) Inhalt meiner $ menuJSONArray-Variablen (die beim Aufrufen der Funktion verwendet wird):
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
)
)
und so weiter...
Ich benutze die unten stehende Funktion, aber ich bleibe beim ersten Element in der Schleife stecken. Brauche wirklich Hilfe, um diese Funktion in mein Gehirn einzubinden. Vielen Dank im Voraus, diese Community rockt !!
///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>
Als Gegenleistung bekomme ich:
<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>
Kann nicht scheinen, aus dieser Schleife herauszukommen. Vielen Dank!!
P.S. Ich befasse mich nicht mit dem Einstürzen des Baumes usw. aus dem referenzierten Beitrag, da ich das mit jquery und css behandeln werde. Ich kann die korrekte Ausgabe der Menüsyntax gerade nicht erhalten.