项目中有很多地方需要用到无限极分类,之前数据量比较少,用递归方法虽然慢但是还可以接受,但是现在的数据量接近4万,php处理递归比较吃亏,递归100次就已经很难跑动了,无奈之下又得选择其它的方法,引用。事实证明引用方式能快速的查询出所有的父子关系。

递归:function getTree($type, $data, $num, $set_dep, $dep = 1)

{

$arr = [];

foreach ($data as $key => $val) {

if ($dep >= $set_dep) {

break;

}

if ($val[$type . '_number'] == $num) {

if (empty($val[$type . '_number'])) {

break;

}

$val['level'] = $dep;

$val['children'] = $this->getTree($type, $data, $val['user_login'], $set_dep, $dep + 1);

$arr[] = $val;

}

}

return $arr;

}

引用:function get_tree_child($type, $list, $num)

{

$tree = array();

$packData = array();

foreach ($list as $data) {

$packData[$data['user_login']] = $data;

}

foreach ($packData as $key => $val) {

//判断是不是根节点,如果是那么就把根节点数组的引用赋给新数组

if ($val[$type . '_number'] == $num) {

$tree[] = &$packData[$key];

} else {

//子类数组赋值给父类数组中键为children的数组

$packData[$val[$type . '_number']]['children'][] = &$packData[$key];

}

}

return $tree;

}

php 引用 无限极分类,php 无限极分类(递归Or引用两种方法)相关推荐

  1. 分类与数值预测是预测问题的两种主要类型

    分类与数值预测是预测问题的两种主要类型

  2. 分类梨和苹果的两种方法

    分类键盘和鼠标只能用形态的方法,不能用元素的方法,因为键盘和鼠标的组成元素可能是相同的.键盘的组成元素并不能唯一特征的重现成键盘的形状.对于键盘和鼠标这类对象形态和组成元素并没有关系. 但分类梨和苹果 ...

  3. WCF服务引用的两种方法

    一.添加服务引用 在项目中单击右键,选择添加服务引用 出现如下的对话框 一般情况下,填写完下面的对话框就可以点击确定,生成代理类了,但有的时候,我们需要对代理类对特殊的设置,比如我们要生成异步操作,要 ...

  4. 判断一个数是否为素数的两种方法:质数又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因。最小的质数是2。

    一,由键盘输入一个数判断是否为素数(设一个数存放变量,将为0的代表非素数,为1的代表为素数) #include <stdio.h> int main() { int i,flag,numb ...

  5. html页面如何引用母版页,内容页面访问母版页控件的两种方法

    母版页是ASP.NET2.0新增的一个功能,使用它可以更方便.更快速的创建风格一致的应用程序..NET的母版页和Dreamweaver的模板非常的相似,但.NET的母版页更加强大,它除了能够实现创建风 ...

  6. 两种方法设置 .NET/C# 项目的编译顺序,而不影响项目之间的引用

    当 A 项目引用 B 项目,那么使用 Visual Studio 或者 MSBuild 编译 A 项目之前就会确保 B 项目已经编译完毕.通常我们指定这种引用是因为 A 项目确实在运行期间需要 B 项 ...

  7. 引用bootstrap的两种方法

    Bootstrap 是最受欢迎的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB 项目. 通过官网下载 bootstrap的官网 bootstrap的下载页面 下载boo ...

  8. CSS导入使用及引用的两种方法

    方法一<link rel="stylesheet" type="text/css" href="test.css"> 方法二&l ...

  9. vue如何在一个组件中引用另外一个组件并使用?有两种方法

    方法一:代码如下 <template><div><!-- 3.在template中就可以直接使用了 --><testComponent></tes ...

最新文章

  1. Linux基础命令---shutdown
  2. greenplum(一)
  3. 十一、Spark Streaming和Kafaka
  4. 自己帮别人写的网站可以公开源码吗_专注爬虫:20个精心总结爬虫项目,爬虫技术这里强(附源码)...
  5. oracle log 分析程序,oracle之logminer日志分析
  6. unsupported major.monor version 51.0 (unable to load *.servlet)………………
  7. 阶段3 2.Spring_02.程序间耦合_7 分析工厂模式中的问题并改造
  8. python大数据论文_大数据环境下基于python的网络爬虫技术
  9. Win1903下,如何简单的附加dnf
  10. 天啦噜,项目上使用InputStream,我被坑了一把!
  11. 「镁客·请讲」小小牛曹翔:Creative AR让孩子们成为21世纪的“神笔马良”
  12. java 远程视频监控系统_基于android的远程视频监控系统 附完整源码
  13. 根据传函求频率响应、根据实验的频率响应求传函、Nyquist图、bode图
  14. 快充协议诱骗芯片大全:XSQ10支持9V12V15V20V
  15. 网络协议对应的端口号
  16. css flex换行且均匀分布
  17. 多线程下载王者农药高清壁纸
  18. 塑料超声波焊接电源发生器设计
  19. 自动发射子弹c语言,C语言代码实现飞机大战
  20. Windows Server 2008 R2 评估版到期 如何延长授权日期

热门文章

  1. java 接口中 常量_在Java接口中怎样访问定义的常量呢?
  2. JDK7新特性之try-with-resources
  3. 华为云 CentOS 8 下 Nginx 1.20 PHP 8.2 安装
  4. 「小程序JAVA实战」 小程序远程调试(九)
  5. linux 中用tr把字符小写转大写,利用tr命令轻松实现大小写转换(1)
  6. Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.
  7. day17--途牛旅游项目-注册功能
  8. NVIDIA Jetson TX2
  9. html中ie9文档模式,IE9:强制IE9浏览器模式和文档模式(IE9: Force IE9 browser mode and document mode)...
  10. WGS84 / BD09 / GCJ02 / MapBar 经纬度坐标互转