当前位置:首页 > PHP

php 菜单 实现

2026-03-12 16:29:14PHP

PHP 菜单实现方法

动态菜单生成

使用数组或数据库存储菜单项,通过循环动态生成HTML。示例代码:

$menuItems = [
    ['title' => '首页', 'url' => 'index.php'],
    ['title' => '产品', 'url' => 'products.php'],
    ['title' => '关于', 'url' => 'about.php']
];

echo '<ul>';
foreach ($menuItems as $item) {
    echo '<li><a href="'.$item['url'].'">'.$item['title'].'</a></li>';
}
echo '</ul>';

数据库驱动菜单

从数据库读取菜单结构,适合内容管理系统:

$db = new PDO('mysql:host=localhost;dbname=site', 'user', 'pass');
$stmt = $db->query("SELECT * FROM menu_items ORDER BY sort_order");
$menuItems = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($menuItems as $item) {
    // 生成菜单代码
}

多级菜单实现

使用递归函数处理多级菜单结构:

function buildMenu(array $items, $parentId = 0) {
    $html = '<ul>';
    foreach ($items as $item) {
        if ($item['parent_id'] == $parentId) {
            $html .= '<li>';
            $html .= '<a href="'.$item['url'].'">'.$item['title'].'</a>';
            $html .= buildMenu($items, $item['id']);
            $html .= '</li>';
        }
    }
    $html .= '</ul>';
    return $html;
}

当前页面高亮

通过比较URL实现当前菜单项高亮:

$currentPage = basename($_SERVER['PHP_SELF']);

foreach ($menuItems as $item) {
    $class = (basename($item['url']) == $currentPage) ? 'active' : '';
    echo '<li class="'.$class.'"><a href="'.$item['url'].'">'.$item['title'].'</a></li>';
}

响应式菜单

结合CSS和JavaScript实现移动端友好菜单:

<nav class="navbar">
    <div class="menu-icon" onclick="toggleMenu()">☰</div>
    <ul class="menu" id="mainMenu">
        <!-- PHP生成的菜单项 -->
    </ul>
</nav>

<style>
.navbar { display: flex; }
.menu-icon { display: none; }
@media (max-width: 768px) {
    .menu-icon { display: block; }
    .menu { display: none; }
    .menu.active { display: block; }
}
</style>

<script>
function toggleMenu() {
    document.getElementById('mainMenu').classList.toggle('active');
}
</script>

权限控制菜单

根据用户角色显示不同菜单项:

$userRole = $_SESSION['user_role'] ?? 'guest';

foreach ($menuItems as $item) {
    if (in_array($userRole, $item['allowed_roles'])) {
        echo '<li><a href="'.$item['url'].'">'.$item['title'].'</a></li>';
    }
}

缓存优化

对不常变化的菜单使用缓存:

php 菜单 实现

$cacheFile = 'menu_cache.txt';
if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < 3600)) {
    echo file_get_contents($cacheFile);
} else {
    ob_start();
    // 生成菜单代码
    $menuHtml = ob_get_clean();
    file_put_contents($cacheFile, $menuHtml);
    echo $menuHtml;
}

标签: 菜单php
分享给朋友:

相关文章

css制作菜单

css制作菜单

CSS 制作菜单的方法 使用 CSS 可以制作多种风格的菜单,包括水平菜单、垂直菜单、下拉菜单等。以下是几种常见的实现方式。 水平菜单 水平菜单通常用于导航栏,可以通过 display: inlin…

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常用…

jquery 菜单

jquery 菜单

jQuery 菜单实现方法 使用 jQuery 创建动态菜单可以通过多种方式实现,以下是几种常见的方法: 基于 HTML 和 CSS 的基础结构 创建菜单的 HTML 结构通常使用无序列表 <…

vue实现左右菜单联动实现

vue实现左右菜单联动实现

Vue 实现左右菜单联动 数据绑定与状态管理 在 Vue 中实现左右菜单联动,核心是通过共享状态或事件通信实现数据同步。可以通过 Vuex 或组件间的 props/emit 机制管理联动状态。 //…

php实现接口

php实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不实现具体功能。类可以实现一个或多个接口,并必须实现接口中定义的所有方法。 定义接口 接口使用 inter…

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUTO…