php 引用 无限极分类,php 无限极分类(递归Or引用两种方法)
项目中有很多地方需要用到无限极分类,之前数据量比较少,用递归方法虽然慢但是还可以接受,但是现在的数据量接近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引用两种方法)相关推荐
- 分类与数值预测是预测问题的两种主要类型
分类与数值预测是预测问题的两种主要类型
- 分类梨和苹果的两种方法
分类键盘和鼠标只能用形态的方法,不能用元素的方法,因为键盘和鼠标的组成元素可能是相同的.键盘的组成元素并不能唯一特征的重现成键盘的形状.对于键盘和鼠标这类对象形态和组成元素并没有关系. 但分类梨和苹果 ...
- WCF服务引用的两种方法
一.添加服务引用 在项目中单击右键,选择添加服务引用 出现如下的对话框 一般情况下,填写完下面的对话框就可以点击确定,生成代理类了,但有的时候,我们需要对代理类对特殊的设置,比如我们要生成异步操作,要 ...
- 判断一个数是否为素数的两种方法:质数又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因。最小的质数是2。
一,由键盘输入一个数判断是否为素数(设一个数存放变量,将为0的代表非素数,为1的代表为素数) #include <stdio.h> int main() { int i,flag,numb ...
- html页面如何引用母版页,内容页面访问母版页控件的两种方法
母版页是ASP.NET2.0新增的一个功能,使用它可以更方便.更快速的创建风格一致的应用程序..NET的母版页和Dreamweaver的模板非常的相似,但.NET的母版页更加强大,它除了能够实现创建风 ...
- 两种方法设置 .NET/C# 项目的编译顺序,而不影响项目之间的引用
当 A 项目引用 B 项目,那么使用 Visual Studio 或者 MSBuild 编译 A 项目之前就会确保 B 项目已经编译完毕.通常我们指定这种引用是因为 A 项目确实在运行期间需要 B 项 ...
- 引用bootstrap的两种方法
Bootstrap 是最受欢迎的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB 项目. 通过官网下载 bootstrap的官网 bootstrap的下载页面 下载boo ...
- CSS导入使用及引用的两种方法
方法一<link rel="stylesheet" type="text/css" href="test.css"> 方法二&l ...
- vue如何在一个组件中引用另外一个组件并使用?有两种方法
方法一:代码如下 <template><div><!-- 3.在template中就可以直接使用了 --><testComponent></tes ...
最新文章
- Linux基础命令---shutdown
- greenplum(一)
- 十一、Spark Streaming和Kafaka
- 自己帮别人写的网站可以公开源码吗_专注爬虫:20个精心总结爬虫项目,爬虫技术这里强(附源码)...
- oracle log 分析程序,oracle之logminer日志分析
- unsupported major.monor version 51.0 (unable to load *.servlet)………………
- 阶段3 2.Spring_02.程序间耦合_7 分析工厂模式中的问题并改造
- python大数据论文_大数据环境下基于python的网络爬虫技术
- Win1903下,如何简单的附加dnf
- 天啦噜,项目上使用InputStream,我被坑了一把!
- 「镁客·请讲」小小牛曹翔:Creative AR让孩子们成为21世纪的“神笔马良”
- java 远程视频监控系统_基于android的远程视频监控系统 附完整源码
- 根据传函求频率响应、根据实验的频率响应求传函、Nyquist图、bode图
- 快充协议诱骗芯片大全:XSQ10支持9V12V15V20V
- 网络协议对应的端口号
- css flex换行且均匀分布
- 多线程下载王者农药高清壁纸
- 塑料超声波焊接电源发生器设计
- 自动发射子弹c语言,C语言代码实现飞机大战
- Windows Server 2008 R2 评估版到期 如何延长授权日期
热门文章
- java 接口中 常量_在Java接口中怎样访问定义的常量呢?
- JDK7新特性之try-with-resources
- 华为云 CentOS 8 下 Nginx 1.20 PHP 8.2 安装
- 「小程序JAVA实战」 小程序远程调试(九)
- linux 中用tr把字符小写转大写,利用tr命令轻松实现大小写转换(1)
- Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.
- day17--途牛旅游项目-注册功能
- NVIDIA Jetson TX2
- html中ie9文档模式,IE9:强制IE9浏览器模式和文档模式(IE9: Force IE9 browser mode and document mode)...
- WGS84 / BD09 / GCJ02 / MapBar 经纬度坐标互转