PHP实现无限极分类生成分类树的方法

本文实例讲述了PHP实现无限极分类生成分类树的方法分享给大家供大家参考,具体如下:

现在的分类数据库设计基本都是:每一个分类一个id主键字段,一个pid指向父类的id,这样便可实现无限级分类,取出的数据就是如下的格式:

1,"pid" => 0,'cat' => '栏目一'),array("id" => 2,'cat' => '栏目二'),array("id" => 3,"pid" => 1,'cat' => '栏目三'),array("id" => 4,"pid" => 2,'cat' => '栏目四'),array("id" => 5,'cat' => '栏目五'),array("id" => 6,"pid" => 5,'cat' => '栏目六'),array("id" => 7,'cat' => '栏目七'),array("id" => 8,"pid" => 6,'cat' => '栏目八'),array("id" => 9,'cat' => '栏目九'),array("id" => 10,'cat' => '栏目十'),array("id" => 11,"pid" => 10,'cat' => '栏目十一'),array("id" => 12,"pid" => 11,'cat' => '栏目十二'),array("id" => 13,'cat' => '栏目十三'),array("id" => 14,"pid" => 13,'cat' => '栏目十四') );

不多说,直接上处理代码

$v){ $refer[$v['id']] = & $arr[$k]; //创建主键的数组引用 } foreach($arr as $k => $v){ $pid = $v['pid']; //获取当前分类的父级id if($pid == 0){ $tree[] = & $arr[$k]; //顶级栏目 }else{ if(isset($refer[$pid])){ $refer[$pid]['subcat'][] = & $arr[$k]; //如果存在父级栏目,则添加进父级栏目的子栏目数组中 } } } return $tree; }

测试运行:

rush:PHP;"> $cat = make_tree($arr); print_r($cat);

运行结果:

Array ( [id] => 1 [pid] => 0 [cat] => 栏目一 [subcat] => Array ( [0] => Array ( [id] => 3 [pid] => 1 [cat] => 栏目三 ) [1] => Array ( [id] => 5 [pid] => 1 [cat] => 栏目五 [subcat] => Array ( [0] => Array ( [id] => 6 [pid] => 5 [cat] => 栏目六 [subcat] => Array ( [0] => Array ( [id] => 8 [pid] => 6 [cat] => 栏目八 ) ) ) [1] => Array ( [id] => 7 [pid] => 5 [cat] => 栏目七 ) ) ) [2] => Array ( [id] => 9 [pid] => 1 [cat] => 栏目九 ) ) ) [1] => Array ( [id] => 2 [pid] => 0 [cat] => 栏目二 [subcat] => Array ( [0] => Array ( [id] => 4 [pid] => 2 [cat] => 栏目四 ) [1] => Array ( [id] => 13 [pid] => 2 [cat] => 栏目十三 [subcat] => Array ( [0] => Array ( [id] => 14 [pid] => 13 [cat] => 栏目十四 ) ) ) ) ) [2] => Array ( [id] => 10 [pid] => 0 [cat] => 栏目十 [subcat] => Array ( [0] => Array ( [id] => 11 [pid] => 10 [cat] => 栏目十一 [subcat] => Array ( [0] => Array ( [id] => 12 [pid] => 11 [cat] => 栏目十二 ) ) ) ) ) )

如果大家需要这样的组装格式,或者需要该格式方便后续的处理,可以尝试此方法

更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《PHP常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...