从数组创建菜单,可以从脚本的任何位置连接

时间:2014-02-21 10:40:33

标签: php arrays

我正在尝试制作类似WordPress的菜单,但更简单。在WordPress中,您可以从任何PHP脚本中连接管理员侧边栏菜单,这就是我想要做的。

这是包含菜单信息的所有数组

$admin_menu_page = array();
    $admin_submenu_page = array();

    $admin_menu_page[] = array("Dashboard", "dashboard");
    $admin_menu_page[] = array("Pages", "pages");
    $admin_menu_page[] = array("Setings", "setings");

    $admin_submenu_page['dashboard'] = array("Home", "home");
    $admin_submenu_page['dashboard'] = array("Update", "update");

    $admin_submenu_page['pages'] = array("Add New Page", "new");
    $admin_submenu_page['pages'] = array("All Pages", 'pages');

    $admin_submenu_page['setings'] = array("SMTP", "smtp");
    $admin_submenu_page['setings'] = array("Theme Options", "theme-options");

这是在页面中呈现该菜单的html部分

echo '<ul>';
foreach($admin_menu_page as $menu){
    echo '<li>';
    echo '<a href="#">';
    echo $menu[0];
    echo '<ul>';
        foreach($admin_submenu_page[$menu[1]] as $submenu){
            echo '<li>';
            echo '<a href="#">';
            echo $submenu;
            echo '</a>';
            echo '</li>';
        }
    echo '</ul>';
    echo '</a>';
    echo '</li>';
}
echo '</ul>';

这就是上面代码的内容 enter image description here 这就是最终结果应该如何

enter image description here

2 个答案:

答案 0 :(得分:1)

首先你需要正确创建子菜单,你缺少括号:

相反:

$admin_submenu_page['dashboard'] = array("Home", "home");
$admin_submenu_page['dashboard'] = array("Update", "update");

$admin_submenu_page['pages'] = array("Add New Page", "new");
$admin_submenu_page['pages'] = array("All Pages", 'pages');

$admin_submenu_page['setings'] = array("SMTP", "smtp");
$admin_submenu_page['setings'] = array("Theme Options", "theme-options");

执行:

$admin_submenu_page['dashboard'][] = array("Home", "home");
$admin_submenu_page['dashboard'][] = array("Update", "update");

$admin_submenu_page['pages'][] = array("Add New Page", "new");
$admin_submenu_page['pages'][] = array("All Pages", 'pages');

$admin_submenu_page['setings'][] = array("SMTP", "smtp");
$admin_submenu_page['setings'][] = array("Theme Options", "theme-options");

第二个渲染,更改:

echo $submenu;

echo $submenu[0];

答案 1 :(得分:1)

$main_menu = array() ;

$sub_menu = array() ;
$sub_menu['dashboard'][] = array( "title" => "Home" , "action" => "home" ) ;
$sub_menu['dashboard'][] = array( "title" => "Update" , "action" => "update" ) ;

$main_menu['dashboard']['title'] = 'Dashboard' ;
sort( $sub_menu['dashboard'] ) ;
$main_menu['dashboard']['submenu'] = $sub_menu['dashboard'] ;

$sub_menu['pages'][] = array( "title" => "All Pages" , "action" => "pages" ) ;
$sub_menu['pages'][] = array( "title" => "Add New Page" , "action" => "new" ) ;

$main_menu['pages']['title'] = 'Pages' ;
sort( $sub_menu['pages'] ) ;
$main_menu['pages']['submenu'] = $sub_menu['pages'] ;

$sub_menu['setings'][] = array( "title" => "SMTP" , "action" => "smtp" ) ;
$sub_menu['setings'][] = array( "title" => "Theme Options" , "action" => "theme-options" ) ;

$main_menu['setings']['title'] = 'Setings' ;
sort( $sub_menu['setings'] ) ;
$main_menu['setings']['submenu'] = $sub_menu['setings'] ;

foreach ( $main_menu as $key => $menu ) {
    echo '<li>' ;
    echo '<a href="#">' ;
    echo $menu['title'] ;
    echo '<ul>' ;

    foreach ( $menu['submenu'] as $item ) {
        echo '<li>' ;
        echo "<a href=\"#{$item['action']}\">" ;
        echo $item['title'] ;
        echo '</a>' ;
        echo '</li>' ;
    }
    echo '</ul>' ;
    echo '</li>' ;
}

请注意,此解决方案仅适用于子菜单1到1,对于子菜单N到N子菜单,您应该使用递归来优化此脚本:

参见 - &gt; http://www.php.net/manual/pt_BR/regexp.reference.recursive.php