php递归无限极分类速度慢怎么办
1、//假设你有一个符合递归要求的数据表 //这里取出全部数据这里假设结果为:$countryList $countryList=$city->getChildrenList(); $listdata=array(); foreach($countryListas$coun){ $listdata[$coun["id"]]=$coun; //这里以`$coun["id"]`为参数取出下一级数据
2、假设结果为:$provinceList foreach($provinceListas$province){ $listdata[$province["id"]]=$province; $listdata[$province["id"]]["country"]=$coun["name"]。
3、 //这里以`$province["id"]`为参数取得最后一级数据假设结果为:$area foreach($areaas$v){ $listdata[$v["id"]]=$v; $listdata[$v["id"]]["province"]=$province["name"]; $listdata[$v["id"]]["country"]=$coun["name"]; } } } //三维数组递归完成。
4、$str = '[{"id":1,"name":"lideqi","parentid":0,"childs":[{"id":2,"name":"mahnqiu","parentid":1,"childs":[{"id":3,"name":"wangxiao","parentid":2},{"id":5,"name":"realy","parentid":2,"childs":[{"id":6,"name":"month","parentid":5}]}]},{"id":7,"name":"dog","parentid":1}]},{"id":4,"name":"good","parentid":0}]';上面是一个json串,其中子节点可能会有很多,例子中只是展示一小部分,想要达到的效果如图:有层级关系的。
5、首先 将json 解码成数组, 用json_decode 函数 注意 一定要加上第二个参数 否则他会返回一个对象。接下来就是地递归了。这是一个最简单的递归只要逐个遍历即可。
6、下面是完整的代码: $data=json_decode($str,true); $options=g髫潋啜缅etChildren($data); functiongetChildren($parent,$deep=0){ foreach($parentas$row){ $data[]=array("id"=>$row['id'],"name"=>$row['name'],"pid"=>$row['parentid'],'deep'=>$deep); if($row['childs']){ $data=array_merge($data,getChildren($row['childs'],$deep+1)); } } return$data; } ?> <?phpforeach($optionsas$row){?> <?phpechostr_pad("",$row['deep']*3,"-",STR_PAD_RIGHT);?><?phpecho$row['name'];?> <?php}?>