当前位置:首页 > 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导航菜单

创建基本HTML结构 导航菜单的基础是HTML结构。使用<nav>标签包裹无序列表<ul>,每个菜单项用<li>标签表示,链接用<a>标签。 <…

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HTTP…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注意…

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…

php实现博客

php实现博客

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