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

PHP使用数组和foreach实现页面导航时分类active状态设置问题

解决方案

你只需要两步修改即可实现分类菜单自动激活展开:

第一步:获取当前激活页面所属分类ID

在你原有代码中$arr遍历赋值完成后,新增以下代码:

// 查找当前激活页面对应的分类ID
$active_cat_id = '';
foreach ($arr as $nav_item) {
    if ($nav_item['css_class'] === 'active') {
        $active_cat_id = $nav_item['category'];
        break;
    }
}

第二步:遍历分类时动态设置active类

修改你输出分类的循环逻辑,每次循环前判断当前分类是否为激活分类,给$CAT_ACTIVE赋值:

foreach ( $cat_options as $cat) {
    // 动态判断当前分类是否需要激活
    $CAT_ACTIVE = ($cat['category'] == $active_cat_id) ? 'active' : '';
    // 以下保留你原有输出代码即可
    echo "
    <div class=\"menu-item has-sub $CAT_ACTIVE\">
        <a href=\"javascript:;\" class=\"menu-link\">
            <div class=\"menu-icon\">
                <i class=\"".$cat['category_image']."\"></i>
            </div>
            <div class=\"menu-text\">".$cat['category_name']."</div>
            <div class=\"menu-caret\"></div>
        </a>
        <div class=\"menu-submenu\">";
    
        foreach ( $arr as $nav) {
            if ($nav['category'] == $cat['category'] AND $nav['link_display'] == 'yes') {
                echo "
            <div class=\"menu-item ".$nav['css_class']."\">
                <a href=\"".$nav['link_href']."\" class=\"menu-link \"><div class=\"menu-text\">".$nav['link_text']."</div></a>
            </div>
                ";
            }
        }
    
    echo "
        </div>
    </div>"; 
}

逻辑说明

当用户访问任意页面时,代码会先匹配到当前激活的页面,提取它所属的分类ID,遍历一级分类时只要匹配到对应ID,就自动给分类容器加上active类,实现菜单自动展开效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:27:00