php无限分类原理,php 递归无限级分类原理和实现代码

递归无限级分类的原理:

每一个分类都记录它的父级id,当为顶级分类时,父级id为0。这样无论哪个分类,都可以通过父级id一层一层去查明它的所有父级,以便清楚知道它所属何种分类,层级深度为几。

对数据进行重组,在重组的过程中,根据其父子关系,将相应的类别摆放到正确的位置。/*无限极分类列表*/

public function getTree($data='',$cate_id=0)

{

if(empty($data)){

$data = $this->order('listorder')->field('id,parent_id,cate_name,listorder')->select()->toArray();

}

return $this->_reSort($data,$cate_id);

}

//无限极分类树状结构,修改level值

/* @param $data 要遍历的分类数组

* @param $parent_id 节点pid,默认为0,表示从顶级节点开始

* @param $ret重组排序的所有后代节点

* @param $cate_level 节点层级

*/

private function _reSort($data, $parent_id=0, $cate_level=0, $isClear=TRUE)

{

//用于保存重组排序后的结果

static $ret = array();

//刚进入函数要清除上次调用此函数后留下的静态变量的值,进入深一层循环时则不要清除

if($isClear)

$ret = array();

foreach ($data as $k => $v)

{

if($v['parent_id'] == $parent_id)

{

$v['cate_level'] = $cate_level;

//找到以$parent_id为父节点的子节点,将其保存

$ret[] = $v;

unset($data[$k]);

//然后以该节点为父节点,继续找后台节点

$this->_reSort($data, $v['id'], $cate_level+1, FALSE);

}

}

return $ret;

}

调用class Category extends Base

{

public function index()

{

$category_model = new Categorys();

$categoryTree = $category_model->getTree();

return view('',[

'categoryTree' =>$categoryTree,

'left_menu' => 1,

]);

}

}

9c7740bedd33d45862528ddf6245c488.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值