php 无限分类

在这里插入图片描述

public function getTree(){
	//遍历数组,按照id作为键名重新组建新的数组
	$array = [
		[
			'id' => 1,
			'pid' => 0,
			'name' => "书籍"
		],
		[
			'id' => 2,
			'pid' => 0,
			'name' => "衣服"
		],
		[
			'id' => 3,
			'pid' => 0,
			'name' => "电子商品"
		],
		[
			'id' => 4,
			'pid' => 1,
			'name' => "古代书籍"
		],
		[
			'id' => 5,
			'pid' => 1,
			'name' => "近代书籍"
		],
		[
			'id' => 6,
			'pid' => 4,
			'name' => "红楼梦"
		],
		[
			'id' => 7,
			'pid' => 5,
			'name' => "莫问"
		],
		[
			'id' => 8,
			'pid' => 2,
			'name' => "男衣服"
		],
		[
			'id' => 9,
			'pid' => 2,
			'name' => "女衣服"
		],
		[
			'id' => 10,
			'pid' => 9,
			'name' => "裙子"
		],
		[
			'id' => 11,
			'pid' => 3,
			'name' => "笔记本"
		]
	];
	$new_array = [];        
	foreach($array as $v){
		$new_array[$v['id']] = $v;
	}
	//遍历新的数组,对每一个值的pid进行判断,判断新数组中是否存在键名为pid的值,如果存在,当前值为存在的pid的子节点,不存在,当前值为一级节点,添加到返回的数据中作为一级节点。这里使用引用传值是因为直接传值是不会影响到函数外边的变量值,我们这里要给一级节点添加子节点(sons),所以需要用到引用传值。
	$return_tree = [];
	foreach($new_array as $kk=>$vv){
		if(isset($new_array[$vv['pid']])){
			$new_array[$vv['pid']]['sons'][] = &$new_array[$kk];
		}else{
			$return_tree[] = &$new_array[$kk];
		}
	}
	return show(1,'获取成功',$return_tree);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值