首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >php递归算法经典实例_一文读懂递归算法

php递归算法经典实例_一文读懂递归算法

作者头像
全栈程序员站长
发布2022-09-22 17:35:12
发布2022-09-22 17:35:12
1.1K0
举报

大家好,又见面了,我是你们的朋友全栈君。

本篇文章主要介绍PHP递归算法详解,感兴趣的朋友参考下,希望对大家有所帮助。

遇到需要设计树节点的数据库结构,以及需要读出来的树节点数据结构!大家是否会选择用数据库的查询方式来获取树结构呢?//曾经的数据库查询获取方式res = this->db->query(“select * from menu where pid = 0”);foreach(res as k=>v){ res[k][‘child’] = this->db->query(“select * from menu where pid =”.

}

//获得结果 $res;

注意:不得不说,这种方式的确可行,但是它的缺点在于,你需要固定多少层级,以及数据库的大量运行查询。

不要忽视了那点数据库的查询消耗哦,数据小还无所谓,但是数据量大了。这种可行的方式,会给系统带来很大的负担!

那么,大家要明白一个道理,有些时候 数据库的操作 利大于 PHP程序算法,有些时候则反之!

在这种基础的树节点情况下,用算法是最佳的。

PHP 代码算法(CI框架实现:并非打广告!)public function getMenus(){

//查询

res = this->db->get(‘menu’)->result_array(); res = this->getChild(

print_r($res);

}/**

* 递归 树节点算法

* @param array $array

* @param number $pid

*/private function getChild(array,pid = 0){

data = array(); foreach (array as k=>

if(v[‘pid’] == pid){ //寻找子集

child = this->getChild(array,v[‘id’]); //加入数组

v[‘child’] = child?:array();

data[] = v;//加入数组中

}

} return $data;

}

//这样的好处在于,运算速度快,消耗小,而且不定层级。意味着,数据库写多少层级,该算法,都可以获取出来

结果:Array(

[0] => Array

(

[id] => 1

[title] => PHP中文网

[pid] => 0

[sort] => 0

[child] => Array

(

)

)

[1] => Array

(

[id] => 2

[title] => 系统设置

[pid] => 0

[sort] => 99

[child] => Array

(

[0] => Array

(

[id] => 4

[title] => 权限管理

[pid] => 2

[sort] => 2

[child] => Array

(

)

)

[1] => Array

(

[id] => 5

[title] => 菜单栏目

[pid] => 2

[sort] => 0

[child] => Array

(

)

)

[2] => Array

(

[id] => 3

[title] => 管理员

[pid] => 2

[sort] => 99

[child] => Array

(

)

)

)

)

)

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169566.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档