php 两种获取分类树的方法

1.

/**

* 获取分类树

* @param array $array 数据源

* @param int $pid 父级ID

* @param int $level 分类级别

* @return string

*/

function getCategory($array, $pid =0, $level = 0){

//声明静态数组,避免递归调用时,多次声明导致数组覆盖

static $list = [];

foreach ($array as $key => $value){

//第一次遍历,找到父节点为根节点的节点 也就是pid=0的节点

if ($value['parent_id'] == $pid){

//父节点为根节点的节点,级别为0,也就是第一级

$value['level'] = $level;

//把数组放到list中

$list[] = $value;

//把这个节点从数组中移除,减少后续递归消耗

unset($array[$key]);

//开始递归,查找父ID为该节点ID的节点,级别则为原级别+1

getCategory($array, $value['cat_id'], $level+1);

}

}

return $list;

}

2、

function getTree($items,$pid ="parent_id") {

$map = [];

$tree = [];

foreach ($items as &$it){

$it['id'] = (string)$it['cat_id'];

$it['label'] = $it['cat_name'];

unset($it['cat_id']);

unset($it['cat_name']);

$map[$it['id']] = &$it;

} //数据的ID名生成新的引用索引树

foreach ($items as &$at){

$parent = &$map[$at[$pid]];

if($parent) {

$parent['children'][] = &$at;

}else{

$tree[] = &$at;

}

}

return $tree;

}

php怎么获取分类数,php 两种获取分类树的方法相关推荐

  1. html 获取title值,分享两种获取WEB标题title的方法

    如何获取HTML页面的标题?下面本篇文章就来给大家介绍一下使用javascript获取HTML文档标题的方法,希望对大家有所帮助. 方法一:使用title属性 title 属性可返回当前文档的标题( ...

  2. 两种获取connectionString的方式

    两种获取connectionString的方式 1. public static string connectionString = ConfigurationManager.ConnectionSt ...

  3. Hibernate中两种获取Session的方式

    转自:https://www.jb51.net/article/130309.htm Session:是应用程序与数据库之间的一个会话,是hibernate运作的中心,持久层操作的基础.对象的生命周期 ...

  4. html中获取modelandview中的json数据_从Bitmap中获取YUV数据的两种方式

    从Bitmap中我们能获取到的是RGB颜色分量,当需要获取YUV数据的时候,则需要先提取R,G,B分量的值,然后将RGB转化为YUV(根据具体的YUV的排列格式做相应的Y,U,V分量的排列) 所以这篇 ...

  5. JAVA获取安卓系统下usb_Android 获取 usb 权限的两种方法

    前言: 最近工作上遇到几个USB模块在android平台上适配使用的情况,所以要用到USB权限获取问题 ##USB权限获取有以下2种方式: 一.直接在AndroidManifest.xml文件中进行如 ...

  6. Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式

    Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式,可以从代码中简单理解成Receiver方式是通过zookeeper来连接kafka队列,Direct方 ...

  7. root android oppo,OPPO R9S怎么ROOT oppor9s获取root权限的两种方法

    OPPO R9S如何ROOT呢?作为一款最新的OPPO系列智能手机,对于刚入手的用户而言,可能不知该如何获取OPPO R9S手机ROOT权限.下面就与大家分享一下获取OPPO R9S手机ROOT权限的 ...

  8. Java 跨平台获取 MAC 地址的两种方法

    前言 有时我们因为软件授权或者其它需要获取主机唯一标识而需要获取用户主机的MAC地址,而本文则将介绍如何通过Java来实现跨平台获取MAC地址的两种方法,同时具体的代码也已上传到GitHub. 如果不 ...

  9. php抓取图片curl,php获取远程图片的两种 CURL方式和sockets方式获取远程图片

    php获取远程图片的两种:CURL方式和sockets方式获取远程图片,需要的朋友可以参考下. 方式1:sockets $a = "http://jb51.net/content/uploa ...

最新文章

  1. 努力成为优秀的工程师
  2. response html 页面,使用response将html拼接页面写到当前浏览器端完成自动提交功能...
  3. 架构师养成之道-03-jvm内存分布详解
  4. oracle multi read,解读Oracle12.2体系架构:Filesystem与Multitenant
  5. php按id获取整条数据库,Ajax取得数据库的json值,想通过id获取对应信息,但是都默认获取第一条了...
  6. ASP.NET Web API的Controller是如何被创建的?
  7. elementUI压缩图片和将图片转成base64格式
  8. 客快物流大数据项目(二十九):下载CDH的安装包
  9. JQUI 的一个小问题
  10. 华为研发工程师编程题:汽水瓶 [python]
  11. 中首清算:她被誉为中国第一美女,迷倒国际花花公子,今36岁仍单身
  12. 微信小程序第三方平台开发配置
  13. 引爆寒假招生——圣诞节活动方案大放送
  14. 12.静态路由、静态缺省路由
  15. Yii2框架bootstrap样式理解
  16. 静默活体检测之Silent-Face-Anti-Spoofing
  17. How To Resolve Stranded DBA_2PC_PENDING Entries [ID 401302.1]
  18. ESP32 开发之旅⑪ UDP服务
  19. 来自沪江、滴滴、蘑菇街架构师的 Docker 实践分享
  20. C++输入输出(学号姓名性别)

热门文章

  1. html5carousel图片轮播,jQuery响应式轮播图插件VM Carousel
  2. Linux文件IO(文件的读写)
  3. windows下修改tomcat的startup.bat脚本文件后台运行
  4. 第五章· MySQL数据类型
  5. Linux CentOS7.0 (01)在Vmvare Workstation上 安装配置
  6. Navicat Premium 实用快捷键
  7. Spark学习(一) -- Spark安装及简介
  8. CSS浏览器兼容性----Hack
  9. Navicat for MySQL数据库管理工具
  10. Core Location :⽤用于地理定位