通过引用方式实现无限极分类
思路:
1.即所有待处理的数据进行包装成下标为主键id(pk)的数组,便于有pid获取对应的父栏目。
2.对包装的数据进行循环,如果为根节点,则将其引用添加到tree中,否则,将其引用添加到其父类的子元素中。这样虽然tree中,只是添加了根节点,但是每个根节点如果有子元素,其中包含了子元素的引用。故能形成树型。
代码如下
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 /** * 把返回的数据集转换成Tree * @param array $list 要转换的数据集 * @param string $pk 自增字段(栏目id) * @param string $pid parent标记字段 * @return array * @author dqs <1696232133@qq.com> */ function make_tree( $list , $pk = 'id' , $pid = 'pid' , $child = '_child' , $root =0){ $tree = array (); $packData = array (); foreach ( $list as $data ) { $packData [ $data [ $pk ]] = $data ; } foreach ( $packData as $key => $val ){ if ( $val [ $pid ]== $root ){ //代表跟节点 $tree []=& $packData [ $key ]; } else { //找到其父类 $packData [ $val [ $pid ]][ $child ][]=& $packData [ $key ]; } } return $tree ;