手机版

PHP不使用递归的无限级分类简单实例

时间:2021-09-13 来源:互联网 编辑:宝哥软件园 浏览:

不用递归实现无限级分类,简单测试了下性能比递归稍好一点点点,但写得太复杂了,还是递归简单方便点

代码:

?php$list=array(array('id'=1,' pid'=0,' deep'=0,' name'='test1 ')、array('id'=2,' pid'=1,' deep'=1,' name'='test2 ')、array('id'=3,' pid'=0,' deep'=0,' name'='test3 ')、array('id'=4,' pid'=2,' deep'=2,' name'='test4 ')、array('id'=5,' pid'=2,' deep '函数resolve($ list){ $ NewList=$ managed=$ deep=$ InDeps=array();foreach($ list as $ row){ $ NewList[$ row[' id ']]=$ row;} $ list=nullforeach($ NewList as $ row){ if(!isset($ managed[$ row[' PID '])| |!isset($管理[$ row[' PID ']][' children '][$ row[' id '])){ if($ row[' PID ']0!isset($ managed[$ row[' PID ']][' children '])$ managed[$ row[' PID ']]=$ NewList[$ row[' PID ']];$管理[$ row[' PID ']][' children '][$ row[' id ']]=$ row;} if(!isset($ InDesp[$ row[' deep '])| |!in_array($row['id'],$ inDeeps[$ row[' deep '])){ $ inDeeps[$ row[' deep ']][]=array($ row[' PID '],$ row[' id ']);} } krsort($ inDeeps);array _ shift($ inDeeps);foreach($ inDeeps as $ deep=$ ids){ foreach($ ids as $ m){//存在子栏目的进行转移if(isset($ manage[$ m[1]]){ $ manage[$ m[0]][' children '][$ m[1]]=$ manage[$ m[1]];$ managed[$ m[1]]=null;未设置($管理[$ m[1]]);} } }返回$管理[0][' children '];}递归实现

函数resolve2($list,$ PID=0){ $ manages=array();foreach($ list as $ row){ if($ row[' PID ']==$ PID){ $ management[$ row[' id ']]=$ row;$children=resolve2($list,$ row[' id ']);儿童管理[$ row[' id ']][' children ']=$ children;} } return $ manages }以上这篇服务器端编程语言(专业超文本预处理器的缩写)不使用递归的无限级分类简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

版权声明:PHP不使用递归的无限级分类简单实例是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。