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 ...
最新文章
- 新职业风口已至!人社部宣布这10个职业缺口近千万!
- 联想sr950配置raid卡_联想服务器ThinkSeverRAID卡设置教程
- ssh遇到port 22:No route to host
- AOP切入同类调用方法不起作用,AopContext.currentProxy()帮你解决这个坑
- win10系统excel2019单元格显示完整的年月日时分秒设置方法
- Base64加解密的实现方式
- 【itext学习之路】--5.对pdf进行盖章/签章/数字签名
- java tomcat重启linux_Linux下tomcat重启
- CSS基础必备知识点04
- 【UI设计师必备】可临摹精美的APP UI Kit模板
- 线程之线程同步(1)
- Photoshop插件-黑白(四)-脚本开发-PS插件
- pip install 时 WARNING: No metadata found in e:\anaconda\lib\site-packages 问题解决
- 【deepin 20.1】终端的介绍
- oracle显示连接超时,Oracle 12179:tns:连接超时的问题
- 微信开发 缓存Storage
- Lei ❤函数的初识
- 数字密码锁的详解之梳理F4总结系列逻辑篇(三)
- PADS(二)更多使用和实战总结
- 《单元测试》Junit5入门教程——非常详细,入门即精通