You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将PHP数组数据填充到带下拉选项的HTML导航菜单中

基于PHP数组渲染带下拉功能的导航菜单

需要将给定的PHP数组数据渲染为带有下拉功能的导航菜单,目前使用foreach循环仅能输出主数组的键值对,需把Services对应的子数组内容作为下拉选项展示。

原数组结构

$menuData = [
   '0' => ['Home'],
   '1' => ['About'],
   '2' => ['Contact'],
   '3' => [
      'Services' => ['Web Development', 'Wordpress', 'Mobile App'],
   ],
];

原始HTML代码(需修改)

<ul class="navbar-nav me-auto mb-2 mb-lg-0">
    <?php
    foreach ($menuData as $value) { ?>
        <li class="nav-item">
            <a class="nav-link active" aria-current="page" href="#"><?php echo $value[0]; ?></a>
        </li>
    <?php }
    ?>
    <li class="nav-item dropdown">
        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
            Services
        </a>
        <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
            <li><a class="dropdown-item" href="#">Web Development</a></li>
            <li><a class="dropdown-item" href="#">Wordpress</a></li>
            <li><a class="dropdown-item" href="#">Mobile App</a></li>
        </ul>
    </li>
</ul>

修改后的实现代码

修改后的代码会自动识别下拉菜单项,无需手动硬编码Services部分:

<ul class="navbar-nav me-auto mb-2 mb-lg-0">
    <?php foreach ($menuData as $item): ?>
        <?php
        // 判断当前项是否为下拉菜单(包含关联数组而非普通索引数组)
        $isDropdown = is_array(reset($item)) && !is_numeric(key($item));
        if ($isDropdown):
            $dropdownTitle = key($item);
            $dropdownItems = reset($item);
        ?>
            <li class="nav-item dropdown">
                <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown<?php echo ucfirst($dropdownTitle); ?>" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                    <?php echo $dropdownTitle; ?>
                </a>
                <ul class="dropdown-menu" aria-labelledby="navbarDropdown<?php echo ucfirst($dropdownTitle); ?>">
                    <?php foreach ($dropdownItems as $subItem): ?>
                        <li><a class="dropdown-item" href="#"><?php echo $subItem; ?></a></li>
                    <?php endforeach; ?>
                </ul>
            </li>
        <?php else: ?>
            <li class="nav-item">
                <a class="nav-link active" aria-current="page" href="#"><?php echo reset($item); ?></a>
            </li>
        <?php endif; ?>
    <?php endforeach; ?>
</ul>

关键逻辑说明

  • 通过is_array(reset($item)) && !is_numeric(key($item))判断当前导航项是否包含下拉子菜单
  • 动态获取下拉菜单标题和子项列表,无需手动指定Services
  • 为每个下拉菜单生成唯一ID,避免多下拉菜单时的DOM冲突
  • 自动遍历子数组生成下拉选项,扩展性更强

内容的提问来源于stack exchange,提问作者Rokibol Hasan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:10:31