php处理无限极分类数据的两种方式

开发过程中,经常会遇到处理无限分类数据,这里就介绍一下处理无限分类数据的两种方式,有不对的地方,还望多多指正。

//测试数据
$array=array(
    [‘id‘=>1,‘parent_id‘=>0,‘name‘=>1],
    [‘id‘=>2,‘parent_id‘=>0,‘name‘=>2],
    [‘id‘=>3,‘parent_id‘=>1,‘name‘=>3],
    [‘id‘=>4,‘parent_id‘=>1,‘name‘=>4],
    [‘id‘=>5,‘parent_id‘=>3,‘name‘=>5],
    [‘id‘=>6,‘parent_id‘=>3,‘name‘=>6]
);
//递归方式
function recursion($array,$parent_id=0){
    $new=[];
    foreach($array as $k=>$v){
        if($v[‘parent_id‘]==$parent_id){
           $v[‘child‘]=recursion($array,$v[‘id‘]);
            if (!$v[‘child‘]) {
                unset($v[‘child‘]);
            }
            $new[] = $v;
        }
    }
    return $new;
}

//引用
function quote($array){
    $items=array();
    foreach($array as $k=>$v){
       $items[$v[‘id‘]]=$v;
    }
    $tree = array();
    foreach($items as $item){
        if(isset($items[$item[‘parent_id‘]])){
            $items[$item[‘parent_id‘]][‘son‘][] = &$items[$item[‘id‘]];
        }else{
            $tree[] = &$items[$item[‘id‘]];
        }
    }
    return $tree;
}

原文地址:https://www.cnblogs.com/yqzc/p/12345293.html

时间: 2024-11-09 00:04:35

php处理无限极分类数据的两种方式的相关文章

关于Mysql删除表数据的两种方式对比

1.delete from table_name 一行一行删除,只删除表数据,auto_increament仍停留在最后一天数据的下一个值. 2.truncate table_name 快捷删除表数据.先删除整个表,然后重新建表结构.auto_increament从1开始. 关于Mysql删除表数据的两种方式对比,布布扣,bubuko.com

向服务器传json数据的两种方式

接触到了向服务器传JSON数据,那么怎么把参数以JSON的形式,传到服务器呢.下面来说说,json字符串的得到方法.一共有两种方式来得到Json的字符串.当然,向服务器上传,不能传字符串,是要转成NSData的,也就是二进制的形式.这个在此不讨论,只说,怎么得到json的字符串. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //第一种方法,是把要传的参数

【代码笔记】向服务器传JSON数据的两种方式

一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //第一种方法,是把要传的参数组合成一个数组,然后由JSONKit把字典转为字符串 NSDictionary* jsonDic = [NSDictionary dictionaryWithObjectsAndKeys:@"李华",@"name",@"女&quo

[微信小程序] 微信小程序下拉滚动选择器picker绑定数据的两种方式

微信小程序下拉滚动选择器picker绑定数据的两种方式  本地数据绑定和wx.request(OBJECT) json数据绑定 1.本地数据绑定 (对象数组) Page({ data:{ //户型 这是一个本地的对象,然后绑定到页面上 pic_array: [ { id: 13, name: '1室1厅1卫' }, { id: 14, name: '1室2厅1卫' }, { id: 15, name: '2室1厅1卫' }, { id: 16, name: '3室1厅2卫' }, { id: 1

oracle数据库删除数据的两种方式

当表中的数据不需要是,则应该删除该数据,并释放所占用的空间; 删除表中的数据有delete和truncate两种方式,下面分别介绍: 一.delete语句 (1)有条件删除    语法格式:delete [from]  table_name  [where condition]; 如:删除users表中的userid为'001'的数据:delete from users where userid='001'; (2)无条件删除整个表数据 语法格式:delete  table_name; 如:删除

Spark Streaming 读取 Kafka 数据的两种方式

在Spark1.3之前,默认的Spark接收Kafka数据的方式是基于Receiver的,在这之后的版本里,推出了Direct Approach,现在整理一下两种方式的异同. 1. Receiver-based Approach val kafkaStream = KafkaUtils.createDstream(ssc, [zk], [consumer group id], [per-topic,partitions] ) 2. Direct Approach (No Receivers) v

oracle查询前N条数据的两种方式

在实际用途中,常常会要求取表中前几条纪录,就有以下两种方式来获取数据: 先排序后查询: SELECT * FROM (SELECT * FROM 表 m ORDER BY create_time DESC) WHERE ROWNUM <= 10 , 先查询后排序: SELECT *  FROM 表 m  WHERE ROWNUM <= 10 ORDER BY create_time DESC; 原文地址:https://www.cnblogs.com/zoushiyu/p/9746550.ht

浏览器原生 form 表单POST 数据的两种方式

我们在提交表单的时候,form表单参数中会有一个enctype的参数.enctype指定了HTTP请求的Content-Type. 常用有两种:application/x-www-form-urlencoded和multipart/form-data. application/x-www-form-urlencoded: 窗体数据被编码为名称/值对,并且将提交的数据进行urlencode.默认情况下,我们所有的表单提交都是通过这种默认的方式实现的. multipart/form-data: 窗体

springMVC接受ajax提交表单,json数据的两种方式

作为一个初入互联网行业的小鑫鑫,在使用springMVC时发现一个好耍的东西,决定记下来,免得哪天忘了,哈哈 第一种 序列化表单,将表单数据序列化为json对象字符串 $("#submit").click(function (){ var form=$("form").serializeArray(); $.ajax({ url:"${pageContext.request.contextPath}/teacher/updateTeacher",