设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间11 现在时间11 缓存数据 我本可以容忍黑暗,如果我不曾见过太阳.然而阳光已使我荒凉,成为更新的荒凉……我啜饮过生活的芳醇,付出了什么,告诉你吧,不多不少,整整一生.

我本可以容忍黑暗,如果我不曾见过太阳.然而阳光已使我荒凉,成为更新的荒凉……我啜饮过生活的芳醇,付出了什么,告诉你吧,不多不少,整整一生. -- 现世道

查看: 948|回复: 3

PHP实现处理三级分类数据的示例代码

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:237
  • 打卡月天数:0
  • 打卡总奖励:4167
  • 最近打卡:2025-06-26 15:44:25
等级头衔

等級:晓枫资讯-上等兵

在线时间
5 小时

积分成就
威望
0
贡献
462
主题
407
精华
0
金钱
5480
积分
947
注册时间
2023-1-9
最后登录
2025-6-26

发表于 2024-2-25 12:20:25 | 显示全部楼层 |阅读模式
目录


  • 一、原始数据
  • 二、函数处理
  • 三、方法补充

一、原始数据
  1. function getDatas(){
  2.     return [
  3.         [
  4.                 'component' => 'system',
  5.                 'redict' => '/system',
  6.                 'path' => '/system',
  7.                 'hidden' => 1,
  8.                 'name' => '系统管理',
  9.                 'children' => [
  10.                         [
  11.                                 'component' => 'user',
  12.                                 'redict' => '/user',
  13.                                 'path' => '/user',
  14.                                 'hidden' => 1,
  15.                                 'name' => '用户管理',
  16.                                 'children' => [
  17.                                         [
  18.                                                 'component' => 'user_list',
  19.                                                 'redict' => '/user_list',
  20.                                                 'path' => '/user_list',
  21.                                                 'hidden' => 1,
  22.                                                 'name' => '用户列表',
  23.                                         ],
  24.                                         [
  25.                                                 'component' => 'role',
  26.                                                 'redict' => '/user_role',
  27.                                                 'path' => '/user_role',
  28.                                                 'hidden' => 1,
  29.                                                 'name' => '角色列表',
  30.                                         ],
  31.                                         [
  32.                                                 'component' => 'perm',
  33.                                                 'redict' => '/perm',
  34.                                                 'path' => '/perm',
  35.                                                 'hidden' => 1,
  36.                                                 'name' => '权限列表',
  37.                                         ],
  38.                                 ]
  39.                         ],
  40.                         [
  41.                                 'component' => 'data',
  42.                                 'redict' => '/data',
  43.                                 'path' => '/data',
  44.                                 'hidden' => 1,
  45.                                 'name' => '数据管理',
  46.                                 'children' => [
  47.                                         [
  48.                                                 'component' => 'report',
  49.                                                 'redict' => '/report',
  50.                                                 'path' => '/report',
  51.                                                 'hidden' => 1,
  52.                                                 'name' => '分日报表',
  53.                                         ],
  54.                                         [
  55.                                                 'component' => 'hour_report',
  56.                                                 'redict' => '/hour_report',
  57.                                                 'path' => '/hour_report',
  58.                                                 'hidden' => 1,
  59.                                                 'name' => '分时报表',
  60.                                         ],
  61.                                         [
  62.                                                 'component' => 'month_report',
  63.                                                 'redict' => '/month_report',
  64.                                                 'path' => '/month_report',
  65.                                                 'hidden' => 1,
  66.                                                 'name' => '分月报表',
  67.                                         ],
  68.                                 ]
  69.                         ],
  70.                         [
  71.                                 'component' => 'resource',
  72.                                 'redict' => '/resource',
  73.                                 'path' => '/resource',
  74.                                 'hidden' => 1,
  75.                                 'name' => '资源管理',
  76.                                 'children' => [
  77.                                         [
  78.                                                 'component' => 'res_list',
  79.                                                 'redict' => '/res_list',
  80.                                                 'path' => '/res_list',
  81.                                                 'hidden' => 1,
  82.                                                 'name' => '资源列表'
  83.                                         ]
  84.                                 ]
  85.                         ]
  86.                 ]
  87.         ]
  88. ]
  89. }
复制代码
二、函数处理
  1. function deal(){
  2.         $datas = getDatas();
  3.         $level_1_tree = [];
  4.         foreach($datas as $data_level_1){
  5.             $data_level_1_arr['component'] = $data_level_1['component'];
  6.             $data_level_1_arr['redict'] = $data_level_1['redict'];
  7.             $data_level_1_arr['path'] = $data_level_1['path'];
  8.             $data_level_1_arr['meta'] = [
  9.                  'title' => $data_level_1['name'],
  10.                  'hidden' => $data_level_1['hidden']
  11.             ];
  12.             $level_2_tree = [];
  13.             if(isset($data_level_1['children']) && !empty($data_level_1['children'])) {
  14.                 foreach ($data_level_1['children'] as $data_level_2) {
  15.                     $data_level_2_arr['component'] = $data_level_2['component'];
  16.                     $data_level_2_arr['redict'] = $data_level_2['redict'];
  17.                     $data_level_2_arr['path'] = $data_level_2['path'];
  18.                     $data_level_2_arr['meta'] = [
  19.                      'title' => $data_level_2['name'],
  20.                      'hidden' => $data_level_2['hidden']
  21.                     ];
  22.                     $level_3_tree = [];
  23.                     if (isset($data_level_2['children']) && !empty($data_level_2['children'])) {
  24.                        
  25.                        foreach ($data_level_2['children'] as $data_level_3) {
  26.                             $data_level_3_arr['component'] = $data_level_3['component'];
  27.                             $data_level_3_arr['redict'] = $data_level_3['redict'];
  28.                             $data_level_3_arr['path'] = $data_level_3['path'];
  29.                             $data_level_3_arr['meta'] = [
  30.                                'title' => $data_level_3['name'],
  31.                                'hidden' => $data_level_3['hidden']
  32.                             ];
  33.                             array_push($level_3_tree, $data_level_3_arr);
  34.                             unset($data_level_3_arr);
  35.                        }
  36.                        $data_level_2_arr['children'] = $level_3_tree;
  37.                     }
  38.                     array_push($level_2_tree, $data_level_2_arr);
  39.                     unset($data_level_2_arr);
  40.                 }
  41.                 $data_level_1_arr['children'] = $level_2_tree;
  42.             }
  43.             
  44.             array_push($level_1_tree, $data_level_1_arr);
  45.             unset($data_level_1_arr);
  46.         }
  47.         print_r($level_1_tree);
  48.     }

  49.   deal();
复制代码
三、方法补充

除了上文的方法,小编还为大家整理了PHP处理三级分类数据的其他方法,希望对大家有所帮助
示例代码
  1. <?php
  2. //瞎写的
  3. // 链接数据库
  4. $link = mysqli_connect('localhost','root','root');
  5. if($link == null){
  6.   exit;
  7. }
  8. mysqli_select_db($link,'test');
  9. $link->query("SET NAMES utf8");
  10. $sql = "select * from tp_goods_categorys";
  11. $res = mysqli_query($link,$sql);
  12. while($res && $row = mysqli_fetch_assoc($res)) {
  13.   $list[] = $row;
  14. }
  15. echo '<pre>';
  16. print_r(res($list));
  17. function res($items){
  18.     $tree = array();
  19.     foreach($items as $key =>$val){
  20.             $list = explode(',',$val['categorys_path']);
  21.             switch(count($list)){
  22.                 case 1:
  23.                     $tree[$val['id']] = $val;
  24.                     break;
  25.                 case 2:
  26.                     $tree[$val['categorys_pid']]['son'][$val['id']] = $val;
  27.                     break;
  28.                 case 3:
  29.                     $tree[$list[1]]['son'][$list[2]]['son'] = $val;
  30.                     break;
  31.             }
  32.     }
  33.     return $tree;
  34. }
复制代码
  1. <?php
  2. //递归
  3. $array = array(
  4. array('id' => 1, 'pid' => 0, 'name' => '湖北省'),
  5. array('id' => 2, 'pid' => 0, 'name' => '北京市'),
  6. array('id' => 3, 'pid' => 1, 'name' => '武汉市'),
  7. array('id' => 4, 'pid' => 2, 'name' => '朝阳区'),
  8. array('id' => 5, 'pid' => 2, 'name' => '通州区'),
  9. array('id' => 6, 'pid' => 4, 'name' => '望京'),
  10. array('id' => 7, 'pid' => 4, 'name' => '酒仙桥'),
  11. array('id' => 8, 'pid' => 3, 'name' => '武昌区'),
  12. array('id' => 9, 'pid' => 1, 'name' => '武安市'),
  13. );
  14. function cation($arr,$num=0,$m=1)
  15. {
  16.     $list = [];
  17.     foreach($arr as $k=>$v){
  18.         if($v['pid'] === $num){
  19.             $v['level'] = $m;
  20.             $v['son'] = cation($arr,$v['id'],$m+1);
  21.             $list[] = $v;
  22.         }
  23.     }
  24.     return $list;
  25. }
  26. $list = cation($array);
  27. echo '<pre>';
  28. print_r($list);
  29. echo '</pre>';
复制代码
另一种需求
(重组一维数组)
  1. //    处理分类数据 栏目分级
  2.     public function allMenu($cates,$pid=0,$level=0){
  3.         static $cateArr = array();
  4.         for($i=0;$i<count($cates);$i++){
  5.             if($cates[$i]['pid']==$pid){
  6.                 $cates[$i]['level']=$level;
  7.                 $cateArr[]=$cates[$i];
  8.                 $this->allMenu($cates,$cates[$i]['id'],$level+1);
  9.             }
  10.         }
  11.         return $cateArr;
  12.     }
复制代码
到此这篇关于PHP实现处理三级分类数据的示例代码的文章就介绍到这了,更多相关PHP处理三级分类数据内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
11
积分
2
注册时间
2023-11-23
最后登录
2023-11-23

发表于 2024-5-19 02:25:34 | 显示全部楼层
感谢楼主分享。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
11
积分
2
注册时间
2024-10-20
最后登录
2024-10-20

发表于 2024-10-31 21:08:14 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
20
积分
20
注册时间
2022-12-29
最后登录
2022-12-29

发表于 7 天前 | 显示全部楼层
感谢楼主,顶。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼
4楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表