发表时间:2015-05-27来源:网络
问题:请根据题干描述你的算法,有以下树形结构的文本数据:
部门A 职员1 职员2 部门B 职员3 职员4 部门C 职员5 职员6 部门A 职员1 职员2 部门B 职员3 职员4部门C 职员5 职员6
它们用最常用的table符号标识其数据结构,请使用PHP计算出每条数据的路径、是否是叶子节点并导入一张邻接表。
答案:
//使用换行符号分割数组 $arr = explode(PHP_EOL, PHP_EOL . $str); //用来存储路径的数组 $pathArr = array(); //储存结果的数组 $reArr = array(); //辅助变量 $lastPos = $lastPosPre = 0; foreach ($arr as $id => $v){ ///t出现的次数 $lastPos = strrpos ($v, "/t"); $lastPos = ($lastPos === FALSE)?0:$lastPos+1; //将路径压入数组 $pathArr[$lastPos] = $id; //计算出当前路径 $path = array_slice ($pathArr, 0, $lastPos); //计算父级id $pid = (int) isset ($pathArr[$lastPos - 1]) ? $pathArr[$lastPos - 1] : 0; //首次循环丢弃 if ($id == 0){continue;} //要写入数据库的数据 $reArr[$id] = array( 'id' => $id, 'pid' => $pid, 'is_leaf' => 1, 'path' => '/' . implode('/', $path), 'name' => ltrim($v, "/t") ); //是否叶子节点 if ($lastPos > $lastPosPre) { $reArr[$id-1]['is_leaf'] = 0; } //上一节循环中,/t出现的次数 $lastPosPre = $lastPos; } //使用换行符号分割数组$arr = explode(PHP_EOL, PHP_EOL . $str);//用来存储路径的数组$pathArr = array();//储存结果的数组$reArr = array();//辅助变量$lastPos = $lastPosPre = 0;foreach ($arr as $id => $v){ ///t出现的次数 $lastPos = strrpos ($v, "/t"); $lastPos = ($lastPos === FALSE)?0:$lastPos+1; //将路径压入数组 $pathArr[$lastPos] = $id; //计算出当前路径 $path = array_slice ($pathArr, 0, $lastPos); //计算父级id $pid = (int) isset ($pathArr[$lastPos - 1]) ? $pathArr[$lastPos - 1] : 0; //首次循环丢弃 if ($id == 0){continue;} //要写入数据库的数据 $reArr[$id] = array( 'id' => $id, 'pid' => $pid, 'is_leaf' => 1, 'path' => '/' . implode('/', $path), 'name' => ltrim($v, "/t") ); //是否叶子节点 if ($lastPos > $lastPosPre) { $reArr[$id-1]['is_leaf'] = 0; } //上一节循环中,/t出现的次数 $lastPosPre = $lastPos;}
这份答案,可以导入无限深的树形结构数据。不过未经优化,等已有有时间再琢磨琢磨。
上一篇:PHP 类属性 类静态变量的访问
CI框架连接数据库配置操作以及多数据库操作
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
C语言关键字及其解释介绍 C语言32个关键字详解
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
将视频设置为Android手机开机动画的教程
PHP中的(++i)前缀自增 和 (i++)后缀自增
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
常用dos命令及语法
PHP中include和require区别之我见
兴鼎健康平台下载v3.3.3 安卓官方版
42.12MB |生活服务
快付Pay下载v1.1.31 最新版
20.04MB |商务办公
花月鲜花app下载v2.2.1 安卓官方版
8.63MB |生活服务
一刻talksapp下载v9.5.8 安卓最新版
75.83MB |学习教育
滨海人才网招聘官方版下载v2.1.6 安卓最新版
66.78MB |生活服务
如祺出行企业版app下载v3.6.0 安卓最新版
65.87MB |生活服务
朗拓智慧外勤软件下载v9.4.0 安卓官方版
36.01MB |商务办公
格之格打印app官方正版(G&G Print)下载v1.1.25 安卓版
165.26MB |系统工具
2014-09-05
2022-03-20
2022-03-21
2022-03-24
2014-09-05
2014-09-05
2015-07-05
2014-09-05
2014-09-05
2022-03-21
绝望3黑暗地心中文版(hopeless3)下载v1.3.9 安卓汉化版
其它手游绝望3黑暗地球中文版(hopeless3)下载v1.3.9 安卓版
其它手游绳索英雄骷髅王手游下载v1.1.5 安卓版
其它手游战场模拟官方版下载v1.49.3 安卓最新版
其它手游僵尸战争战斗幸存者游戏下载v6.7 安卓版
其它手游糖果工厂宝宝巴士最新版下载v9.99.00.10 安卓版
其它手游糖果工厂游戏免费版下载v9.99.00.10 安卓手机版
其它手游制作谷游戏下载v1.3.15 安卓版
其它手游疯狂大酒店中文版下载v4.17.5.19 安卓最新版
其它手游