PHP 递归 一个老生常谈的事

首先数据库表结构如下:
CREATE TABLE `menu` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `name` varchar(16) COLLATE utf8_unicode_ci NOT NULL COMMENT '发送的手机号',
  `type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '来源  1 微信  2小程序  默认1',
  `url` text CHARACTER SET utf8 COLLATE utf8_unicode_ci COMMENT '链接',
  `pid` int NOT NULL DEFAULT '0' COMMENT '父级id 默认0 一级',
  `ts` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
  `up_ts` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci COMMENT='菜单表';

<?php

//进行处理
$menu = $this->recursionMenuData(0); //递归获取菜单

/**
 * 递归获取菜单信息
 * @param $pid    父级id 默认0 一级菜单
 * @return array
 */
protected function recursionMenuData($pid = 0)
{
    $menu = $this->model->getData('menu', ['pid' => $pid], ['name,type,url,pid,id']);
    if (!empty($menu['total'])) {
        foreach ($menu['list'] as $key => $value) {
            //$children = $this->model->getData('menu', ['pid' => $value['id']], ['name,type,url,pid,id']);
            $children = $this->recursionMenuData($value['id']);
            $menu['list'][$key]['children'] = $children['list'];
        }
        unset($value);
    }
    return $menu;
}

                
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值