Are there any best practices or example PHP scripts for implementing dynamic menu structures with unlimited depth?

Implementing dynamic menu structures with unlimited depth in PHP can be achieved by using recursion to loop through the menu items and their children. One common approach is to store the menu items in a hierarchical array format, where each item can have a 'children' sub-array containing its child items. By recursively iterating through this array, you can generate the menu HTML with nested lists to represent the hierarchy.

function generateMenu($items) {
    $html = '<ul>';
    
    foreach ($items as $item) {
        $html .= '<li><a href="' . $item['url'] . '">' . $item['title'] . '</a>';
        
        if (!empty($item['children'])) {
            $html .= generateMenu($item['children']);
        }
        
        $html .= '</li>';
    }
    
    $html .= '</ul>';
    
    return $html;
}

// Example usage
$menuItems = [
    ['title' => 'Home', 'url' => '/home'],
    ['title' => 'About', 'url' => '/about', 'children' => [
        ['title' => 'History', 'url' => '/about/history'],
        ['title' => 'Team', 'url' => '/about/team', 'children' => [
            ['title' => 'Management', 'url' => '/about/team/management'],
            ['title' => 'Staff', 'url' => '/about/team/staff']
        ]]
    ]],
    ['title' => 'Services', 'url' => '/services'],
    ['title' => 'Contact', 'url' => '/contact']
];

echo generateMenu($menuItems);