I have a list in a DB like this one:
ID| VAL 1 | menu1 > submenu1 2 | menu1 > submenu1 > subsubmenu1 3 | menu1 > submenu1 > subsubmenu2 4 | menu1 > submenu1 > subsubmenu3 5 | menu1 > submenu1 > subsubmenu3 > lastmenu1 6 | menu2 > submenu1 ...
and i would to use it to generate an ordered list like this one:
- menu1 - submenu1 (a href="#") - subsubmenu1 (a href="$id") - subsubmenu2 (a href="$id") - subsubmenu3 (a href="#") - lastmenu1 (a href="$id") - menu2 (a href="#") - submenu1 (a href="$id")
How to achieve it using PHP (and jQuery if needed)?
Thank you in advance.
$a = [
1 => "menu1 > submenu1",
2 => "menu1 > submenu1 > subsubmenu1",
3 => "menu1 > submenu1 > subsubmenu2",
4 => "menu1 > submenu1 > subsubmenu3",
5 => "menu1 > submenu1 > subsubmenu3 > lastmenu1",
6 => "menu2 > submenu1 ",
];
function addMenuItem(&$arr, array $items, $id) {
$a = &$arr;
while ($name = array_shift($items)) {
if (!isset($a[$name])) {
$a[$name] = [
'id' => $id,
'items' => [],
];
}
$a = &$a[$name]['items'];
}
}
$menu = [];
foreach($a as $id => $i) {
$menuItem = explode(' > ', $i);
addMenuItem($menu, $menuItem, $id);
}
var_dump($menu);