导读:本期聚焦于小伙伴创作的《PHP如何用数组创建微信菜单?PHP微信菜单数组格式教程解析》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《PHP如何用数组创建微信菜单?PHP微信菜单数组格式教程解析》有用,将其分享出去将是对创作者最好的鼓励。

在微信公众平台开发中,通过PHP使用数组定义微信菜单是最常用的实现方式,这种方式结构清晰,方便后续维护和调整菜单内容。正确的数组格式是成功创建菜单的基础,不符合规范的数组会导致接口调用失败。

PHP如何用数组创建微信菜单?PHP微信菜单数组格式教程解析

微信菜单数组的基础结构

微信菜单分为一级菜单和二级菜单,一级菜单最多支持3个,每个一级菜单下最多支持5个二级菜单。菜单数组的最外层是一个包含button键的数组,button的值就是一级菜单的数组集合。

一级菜单字段说明

每个一级菜单元素需要包含以下基础字段:

  • name:菜单名称,最多支持4个汉字或者8个英文字符
  • sub_button:二级菜单数组,若没有二级菜单则不需要该字段,可直接配置菜单类型相关字段
  • type:菜单类型,常见的类型有clickviewminiprogram

二级菜单字段说明

每个二级菜单元素需要包含的字段根据type的不同有所区别,通用基础字段如下:

  • name:二级菜单名称,最多支持7个汉字或者14个英文字符
  • type:菜单类型,必填

常见的菜单类型及对应数组格式

click类型菜单

click类型菜单点击后会触发微信服务器推送对应的事件,需要配置key字段,用于标识菜单的唯一标识,数组格式如下:

<?php
// click类型一级菜单,无二级菜单
$menu_1 = array(
    'name' => '今日推荐',
    'type' => 'click',
    'key'  => 'TODAY_RECOMMEND'
);

// click类型二级菜单
$sub_menu_1 = array(
    'name' => '热门文章',
    'type' => 'click',
    'key'  => 'HOT_ARTICLE'
);
?>

view类型菜单

view类型菜单点击后会直接跳转到配置的网址,需要配置url字段,数组格式如下:

<?php
// view类型二级菜单
$sub_menu_2 = array(
    'name' => '官方站点',
    'type' => 'view',
    'url'  => 'https://ipipp.com/wechat-index'
);
?>

小程序类型菜单

小程序类型菜单点击后会跳转到对应的小程序,需要配置appidpagepathurl三个字段,数组格式如下:

<?php
// 小程序类型二级菜单
$sub_menu_3 = array(
    'name'     => '配套小程序',
    'type'     => 'miniprogram',
    'url'      => 'https://ipipp.com/miniprogram-entry',
    'appid'    => 'wxxxxxxxxxxxxxxxxxxx',
    'pagepath' => 'pages/index/index'
);
?>

完整的菜单数组示例

下面是一个包含2个一级菜单,其中一个一级菜单带2个二级菜单的完整数组示例:

<?php
$menu_array = array(
    'button' => array(
        // 第一个一级菜单,带2个二级菜单
        array(
            'name'       => '功能服务',
            'sub_button' => array(
                array(
                    'name' => '在线客服',
                    'type' => 'click',
                    'key'  => 'ONLINE_SERVICE'
                ),
                array(
                    'name' => '意见反馈',
                    'type' => 'view',
                    'url'  => 'https://ipipp.com/feedback'
                )
            )
        ),
        // 第二个一级菜单,无二级菜单
        array(
            'name' => '关于我们',
            'type' => 'view',
            'url'  => 'https://ipipp.com/about'
        )
    )
);
?>

数组转JSON及接口调用

微信菜单创建接口要求传入的参数是JSON格式,并且需要是UTF-8编码,所以在PHP中需要将数组转换为JSON字符串,转换时需要注意不要进行Unicode转义,否则中文会显示为Unicode编码导致接口报错。

<?php
// 将菜单数组转换为JSON,JSON_UNESCAPED_UNICODE避免中文转义
$menu_json = json_encode($menu_array, JSON_UNESCAPED_UNICODE);

// 微信菜单创建接口地址,需要替换access_token为实际的凭证
$api_url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token=YOUR_ACCESS_TOKEN';

// 使用curl发送POST请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $menu_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8'));
$response = curl_exec($ch);
curl_close($ch);

// 处理返回结果
$result = json_decode($response, true);
if ($result['errcode'] == 0) {
    echo '菜单创建成功';
} else {
    echo '菜单创建失败,错误码:' . $result['errcode'] . ',错误信息:' . $result['errmsg'];
}
?>

常见格式错误及解决方法

错误场景错误原因解决方法
接口返回40001错误access_token无效或者过期重新获取有效的access_token,注意access_token的有效期为2小时
菜单名称显示乱码JSON编码时中文被转义,或者编码不是UTF-8使用json_encode时添加JSON_UNESCAPED_UNICODE参数,确保PHP文件编码为UTF-8
二级菜单不显示一级菜单下sub_button格式错误,或者二级菜单数量超过5个检查sub_button是否为数组格式,控制二级菜单数量不超过5个
菜单类型不生效对应类型的必填字段缺失,比如view类型没有url字段根据菜单类型补充对应的必填字段,检查字段拼写是否正确

注意事项

在定义菜单数组时,还需要注意以下规则:

  • 菜单名称不能包含特殊字符,仅支持中文、英文字母、数字和下划线
  • 如果一级菜单有二级菜单,那么该一级菜单不需要配置type字段,type字段只需要配置在二级菜单中
  • 修改菜单后,微信客户端需要重新关注或者清除缓存才能看到最新的菜单效果
  • 测试号创建的菜单和正式号的菜单互不干扰,测试时可以使用测试号验证数组格式是否正确

PHP微信菜单数组格式微信公众平台修改时间:2026-06-21 05:54:40

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。