PHP实现简单的树形列表之二-创新互联

2017.5.22 北京 大雨

创新互联公司网站建设公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!专注中小微企业官网定制,网站设计、成都网站建设,塑造企业网络形象打造互联网企业效应。

来到公司之后, 准备把代码移植到公司的小项目里,移植的过程中发现了一处设计有问题的地方,调整一下。

第一处错误是:构建叶子节点的时候,只保存了节点的名称,没有存ID, 如果页面跟后台交互的时候,当存在节点名称一样的情况,服务器就不能判断出用户正在再操作那个节点。

更改了一下数据结构的定义:
用数组来存放一个节点, 如果这个节点是末端节点,则该数组,只有一个字符串元素,

如果一个节点为叶子节点,则该节点将会有两个字符串元素,第一元素存节点名称,第二个元素存节点ID。
如果这个节点存在子节点,则在当前数组中,增加一个数组,所有的子节点的元素存放在这个数组中。

从数据库中取数据的代码调整如下:

function build_book_tree($data, $parentid){     $nodeName = '';     $child = [];     foreach($data as $key => $val){         //如果当前遍历的项跟查询的id相同,则获取节点的名称         if ($val[0] == $parentid){             $nodeName = $val[1];         }         //如果当前节点的父节点跟查询的节点相同,则通过递归,获取他的子节点,并将结果,赋给当前节点节点数组中         if ($val[2] == $parentid){             array_push($child, build_book_tree($data, $val[0]));         }     }     //不存放空节点     if (count($child) > 0)         return array($nodeName, $child);     else          //return $nodeName;         return [$nodeName, $parentid]; }

生成HTML list的代码调整如下

function build_html_list($data) {     //输出标准父子节点     if (is_array($data) and count($data) == 2){         if (is_string($data[0]) and is_array($data[1])){             // 输出节点名             echo "<li>".$data[0];             // 输出子节点             if (is_array($data[1])){                 echo "<ul>";                 foreach ($data[1] as $item){                     if (is_string($item)){                         echo "<li>".$item."</li>";                     }                      else{                         build_html_list($item);                         }                 }                 echo "</ul>";             }             echo "</li>";            }         // 输出叶子节点 2017.5.22 add by sunhu         else if (is_string($data[0]) and is_int($data[1])){             echo sprintf('<li cid="%d">%s</li>', $data[1], $data[0]);         }                              }  }

这样,如果用户单击一个 li 元素的时候,就可以从 li元素的 cid 属性中,查找到 节点 id 了

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

文章题目:PHP实现简单的树形列表之二-创新互联
转载源于:https://www.cdcxhl.com/article32/iejsc.html

成都网站建设公司_创新互联,为您提供网站设计公司网站改版企业网站制作Google网站制作ChatGPT

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

小程序开发