PHP中怎么引用生成树结构
发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,PHP中怎么引用生成树结构,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。PHP中的引用就是两个变量指向了同一个地方,只要
千家信息网最后更新 2024年11月15日PHP中怎么引用生成树结构
PHP中怎么引用生成树结构,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
PHP中的引用就是两个变量指向了同一个地方,只要在变量前面增加了&符号,它就变成了一个引用
$a='aaa';$b=&$a;$c=&$b;xdebug_debug_zval('a','b','c');
输出结果是:
a: (refcount=3, is_ref=1)='aaa'b: (refcount=3, is_ref=1)='aaa'c: (refcount=3, is_ref=1)='aaa'
"aaa"有了三个引用 , 并且是is_ref是引用类型,那也就意味着不管是我修改$b ,还是修改$c , "aaa"这个都会被改变
可以根据上面这个原理来把一个数据库存储的带pid的逐行数据,变成一个多层级的树状结构
$data=array( array("id"=>2,"pid"=>1), array("id"=>3,"pid"=>1), array("id"=>4,"pid"=>2), array("id"=>5,"pid"=>2), array("id"=>6,"pid"=>3), array("id"=>7,"pid"=>3), array("id"=>1,"pid"=>0),);$refer=array();//存储主键与数组单元的引用关系//遍历foreach($data as $k=>$v){ $refer[$v['id']]=&$data[$k];//为每个数组成员建立对应关系}//遍历2foreach($data as $k=>$v){ $parent=&$refer[$v['pid']];//获取父分类的引用 $parent['child'][]=&$data[$k];//在父分类的children中再添加一个引用成员}print_r($data);
利用了一个$refer数组,时间复杂度是O(n) , 只需要单层循环,直接通过引用修改$data原数据,生成一个树状结构
Array( [0] => Array ( [id] => 2 [pid] => 1 [child] => Array ( [0] => Array ( [id] => 4 [pid] => 2 ) [1] => Array ( [id] => 5 [pid] => 2 ) ) ) [1] => Array ( [id] => 3 [pid] => 1 [child] => Array ( [0] => Array ( [id] => 6 [pid] => 3 ) [1] => Array ( [id] => 7 [pid] => 3 ) ) ) [2] => Array ( [id] => 4 [pid] => 2 ) [3] => Array ( [id] => 5 [pid] => 2 ) [4] => Array ( [id] => 6 [pid] => 3 ) [5] => Array ( [id] => 7 [pid] => 3 ) [6] => Array ( [id] => 1 [pid] => 0 [child] => Array ( [0] => Array ( [id] => 2 [pid] => 1 [child] => Array ( [0] => Array ( [id] => 4 [pid] => 2 ) [1] => Array ( [id] => 5 [pid] => 2 ) ) ) [1] => Array ( [id] => 3 [pid] => 1 [child] => Array ( [0] => Array ( [id] => 6 [pid] => 3 ) [1] => Array ( [id] => 7 [pid] => 3 ) ) ) ) ))
$a='aaa';$b=&$a;$c=&$b;xdebug_debug_zval('a','b','c');
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
结构
数据
生成
变量
数组
分类
存储
帮助
复杂
清楚
三个
两个
内容
单元
单层
原理
地方
复杂度
多层
对此
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
惠普的服务器怎么样
应用服务器返回异常500
安徽智慧社区软件开发电话
苹果手机相册文件数据库
输入服务器
软件开发中专院校
润迪网络技术
简述教育软件开发过程
户外生活服务器有哪些
计算机网络技术 三级 题库
网络安全法罚没收入
中国金融数字化网络技术
在日本学网络安全怎么选择
erp系统云服务器安全吗
曙光服务器怎么设置管理地址
数据库编程软件哪个好
爱数文档管理服务器
信息网络安全期刊收稿
网络安全等级测评考试用书
山东项目软件开发报价
传染病网络安全总结
甘肃省网络安全审判庭揭牌牌
湖州电脑软件开发教程
软件开发合同纠纷官司
软件外包软件开发
oss使用涉及文件上传服务器吗
怎么查看服务器是否链接
混合制直销软件开发
河北web前端软件开发定做
三级网络技术选择题库多少道