在foreach循环中将数组添加到数组中的子菜单

时间:2018-04-12 21:19:47

标签: php arrays

我创建了一个树级菜单,但我想通过简单地添加 - 来分隔所有子菜单,如

main menu
-- 1st level
---- 2nd level
------ 3rd level
and so on

在LI中执行它很容易我可以在运行我的函数之前简单地放置标签但是在选择选项中我无法实现我的目标,任何人都可以帮助我这个请

function fetch_menu($data) {
        foreach($data as $menu) {
            echo "<option value='".$menu->cid."'>".$menu->cname."</option>";

            if(!empty($menu->sub)) {
                fetch_sub_menu($menu->sub);
            }
        }
    }

    function fetch_sub_menu($sub_menu, $dash = '--'){
        foreach($sub_menu as $menu){
            echo "<option value='".$menu->cid."'>".$dash.$menu->cname."</option>";

            if(!empty($menu->sub)) {
                fetch_sub_menu($menu->sub, '--');
            }       

        }
    }

问题在于,在应用上面显示的代码时,每个第二级或第三级菜单的破折号都没有增加  以下是我的数据以数组形式组织的方式

array (
    [cid] => 1,
    [cname] => 'Main Menu',
    [pcid] => 0,
    [sub] => array(
        [cid] => 2,
        [cname] => '1st Level',
        [pcid] => 1,
        [sub] => array(
            [cid] => 3,
            [cname] => '2nd Level',
            [pcid] => 2,
            [sub] => array(

            )
        )
    )
)

1 个答案:

答案 0 :(得分:1)

在重新再次调用函数之前,需要将新破折号添加到list变量中。这应该工作

$dash