php递归无限极分类速度慢怎么办
1、//假设你有一个符合递归要求的数据表//这里取出全部数据 这里假设结果为:$countryList$countryList = $city->getChildrenList();$listdata = array();foreach($countryList as $coun){ $listdata[$coun["id"]] = $coun; //这里以`$coun["id"]`为参数 取出下一级数据

2、 假设结果为:$provinceList foreach($provinceList as $province){ $listdata[$province["id"]] = $province; $listdata[$province["id"]]["country"] = $coun["name"]。

3、 //这里以`$province["id"]`为参数 取得最后一级数据 假设结果为:$area foreach($area as $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 = getChildren($data); function getChildren($parent,$deep=0) { foreach($parent as $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; } ?> <?php foreach ($options as $row) { ?> <?php echo str_pad("",$row['deep']*3, "-",STR_PAD_RIGHT); ?><?php echo $row['name']; ?> <?php } ?>

