2015-11-26 49 views
0

我有这样的数据库的数组。我想把数组放到这样的菜单中。如何从数组创建菜单

  • 设置
    • 菜单类别
      • 菜单分类视图
    • 集团
      • 组视图
    • 存款
    • 组菜单
      • 组菜单查看
    • 菜单
      • 菜单查看
  • ETC

我一直在努力,但到目前为止一切尝试失败

array(
(int) 0 => array(
    'MenuCategory' => array(
     'name' => 'Setting' 
    ), 
    'Menu' => array(
     'name' => 'Menu Category', 
     'url' => '/menu_categories/adding', 
     'parent_id' => null 
    ), 
    'Site' => array(
     'id' => (int) 1 
    ), 
    'Sub' => array(
     'name' => 'Menu Category View', 
     'url' => '/menu_categories/view' 
    ) 
), 
(int) 1 => array(
    'MenuCategory' => array(
     'name' => 'Setting' 
    ), 
    'Menu' => array(
     'name' => 'Group', 
     'url' => '/groups/adding', 
     'parent_id' => null 
    ), 
    'Site' => array(
     'id' => (int) 1 
    ), 
    'Sub' => array(
     'name' => 'Group View', 
     'url' => '/groups/view' 
    ) 
), 
(int) 2 => array(
    'MenuCategory' => array(
     'name' => 'Setting' 
    ), 
    'Menu' => array(
     'name' => 'Deposits', 
     'url' => '/Deposits/requestTiket', 
     'parent_id' => null 
    ), 
    'Site' => array(
     'id' => (int) 1 
    ), 
    'Sub' => array(
     'name' => null, 
     'url' => null 
    ) 
), 
(int) 3 => array(
    'MenuCategory' => array(
     'name' => 'Setting' 
    ), 
    'Menu' => array(
     'name' => 'Group Menus', 
     'url' => '/group_menus/adding', 
     'parent_id' => null 
    ), 
    'Site' => array(
     'id' => (int) 1 
    ), 
    'Sub' => array(
     'name' => 'Group View', 
     'url' => '/group_menus/view' 
    ) 
), 
(int) 4 => array(
    'MenuCategory' => array(
     'name' => 'Setting' 
    ), 
    'Menu' => array(
     'name' => 'Menu', 
     'url' => '/menus/adding', 
     'parent_id' => null 
    ), 
    'Site' => array(
     'id' => (int) 1 
    ), 
    'Sub' => array(
     'name' => 'Menu View', 
     'url' => '/menus/view' 
    ) 
) 

);

任何人都可以帮助我吗? ?

+0

我有一个问题是,如果'Group'是一种有两个子菜单,然后如何数组会是什么? 1)它是'Menu'为'Group'的另一个数组,'Sub'仅在Sub中具有信息(OR)2),具有多个数组,如'Sub'=> array(array('name'=> ...),array('name'=> ...))' –

回答

0

你可以通过它简单地循环使用三个嵌套foreach()循环,就像这样:

$arr = // your array; 
echo "<ul>"; 
foreach($arr as $setting => $nested) { 
    echo "<li>$setting<ul>"; 
    foreach($nested as $category => $nested2) { 
     echo "<li>$category</li><ul>"; 
     foreach($nested2 as $view) { 
      echo "<li>$view</li>"; 
     } 
     echo "</ul></li>"; 
    } 
    echo "</ul></li>"; 
} 
echo "</ul>"; 

与此唯一的问题是,它可能会打印出不必要的(空)<ul> s,而该<ul>的默认到不同的子弹类型(很容易用CSS修复)。

PHP SandboxIdeone处进行测试。下面是输出提供:

<ul><li>setting<ul><li>menu category</li><ul><li>menu category view</li></ul></li><li>group</li><ul><li>group view</li></ul></li><li>deposits</li><ul></ul></li><li>group menu</li><ul><li>group menu array</li></ul></li><li>menu</li><ul><li>menu view</li></ul></li></ul></li></ul>

+0

虽然这会给他一个快速的解决方案,但实际上这不是最好的解决方案。您的解决方案仍可以进行优化。 –