php 查找无限级,Ztree + PHP 无限级节点 递归查找节点法

一、前言

简单的描述一下,实习几个原理,思想,其实写很多东西,思想算是最重要的。

1、目标:将写一个无限节点的树形目录结构,如下图

af53427812c9974a3d8d3bbdc4991983.png

步骤:

1、你的下载 插件  ztree。然后布置在你的项目中。

2、相关CSS

以上CSS 和JS 以你自己的为准。

3、目录结构DIV

4,自己单独js中的代码

里面写的相关功能 及配置!

//配置项

var setting = {

isSimpleData : true,              //数据是否采用简单 Array 格式,默认false  性

showLine : true,                  //是否显示节点间的连线

checkable : true,

callback: {

onClick: zTreeOnClick

}

};

var zNodes;//数据变量

//ajax提交数据,请求后台PHP处理返回出目录结构json数据

$.ajax({

url:"/admin.php/Ztree",

type: "get",

async: false,

dataType:"json",

success: function (data) {

//alert(data);

zNodes=data;    //将请求返回的数据存起来

//alert(zNodes);

},

error: function (){//请求失败处理函数

alert('请求失败');

},

})

//初始化ztree目录结构视图!

$(document).ready(function(){

//alert("111");

$.fn.zTree.init($("#treeDemo"), setting, zNodes);

});

5、后台PHP 递归算法,从数据库中查找目录结构并且生成 JSON数据

地址:如4中,AJAX所请求的 【/admin.php/Ztree】我这里是用的ThinkPHP框架,所以url是这个样子,以你自己的接口文件为准!

//父节点数组

$arr=array();

$arr_str0 = array("name" =>'函数库查询','children'=>$this->SelectSon(1));       //父节点  Pid=1;

$arr_str1 = array("name" =>'数据库查询','children'=>$this->SelectSon(2));       //父节点  Pid=2;

array_push($arr, $arr_str0);

array_push($arr, $arr_str1);//这里是2个父节点。

echo(json_encode($arr)); //这是最后返回给页面,也就是返回给AJAX请求后所得的返回数据 JSON数据

?>

//这里仅仅是一个方法,一个调用SelectSon()方法,返回一个数组集合!但其中用的是递归!

//查找子节点        Pid=父节点ID

private function SelectSon($Pid){

$m=M('ztree');

if(($info=$m->where("Pid='$Pid'")->select())) //查找该父ID下的子ID

{

$data=array();

for ($i=0; $i 

{

$da=array("name" =>$info[$i]['name'],'children'=>$this->SelectSon($info[$i]['id']));  //递归算法!

array_push($data, $da);//加入子节点数组

};

return $data;//一次性返回子节点数组,他们成为同级子节点。

}

else

{

return null;

}

}

?>

主意:由于我是用的thinkphp框架。所以在方法调用上 有些不同,纯PHP文件中,思路应该是一样的,

首先是: 写一个数组。一个父节点的数组。

其次:  写一个方法,传递的参数是 父节点的ID,查询其子节点,在子节点中查询之后,用递归的方式继续查找子节点的子节点,直到最后查询完毕之后,返回数组给调用方法的父节点数组。然后再

echo(json_encode($arr));

转码成 JSON 将其输出,以便于AJAX异步访问,得到JSON数据。

得到之后,回到刚刚的JS功能代码中,直接初始化树目录结构,将其JSON数据传入OK。

总结:

其主要思想分2步走。第一步,是如何能把目录生成出来。先测试时,可以用静态数据。类似于

var node=[

{name:'父节点',children:[{name:'子节点',children:null},{name:'同级子节点',children:null}]}

]

先分析一下,这串数据,他有什么规律。你就会发现。其实很有规律。无限节点,其实就是每个json中,有children,而且

还有同级子节点。

你先用固定数据 生成目录结构之后

你就可以开始考虑,动态的向node传目录结构的数据了。就是我们后面所谓的 AJAX请求 PHP得到JSON数据,

PHP处理中,我用的是递归算法,返回JSON数据。及完成了。目录结构。

哦对了。

$m=M('ztree');

这句代码是thinkphp 实例化 数据操作对象的。

用来查询数据库中,节点是否存在。就是存在子节点,就返回给子节点数组,有几个就加入子节点数组中,查询完了。然后一次性返回,他们就成了同级子节点了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用php实现一个简易的web表单生成器,网络编程PHP Web表单生成器案例分析

本文实例讲述了PHP Web表单生成器。分享给大家供大家参考,具体如下:1.实例:2. 需求分析在项目的实际开发中,经常需要设计各种各样表单。直接编写HTML表单虽然简单,但修改、维护相对麻烦。因此,可以利用PHP实…

php瀑布墙,phpwind Next增加“瀑布流”图墙展示模式

近日,化龙巷网站CEO钱钰在微博上爆出phpwind最新版本的部分截图,引发行业关注。据悉,该版本或命名“Next”,目前,phpwind官方暂未对外披露新版本相关信息,也未公布项目的进展。从流传的产品首页效果图来看,…

管理员信息模块php,管理员模块功能代码

摘要&#xff1a;<?php /*** Created by PhpStorm.* User: Administrator* Date: 2019/5/10* Time: 10:12*/namespace app\admin\contro<?php /*** Created by PhpStorm.* User: Administrator* Date: 2019/5/10* Time: 10:12*/namespace app\admin\controller;use app…

php项目的建立,PHP开发-ZendStudio初学教程-建立PHP项目

英文描述Project Name: Enter the name of your project.Location: Enter the location folder for your project.PHP Server :- Click the drop-down menu and select an existing server for deploying the new server project, or click Add Server to create a new server.…

matlab中随机森林实现,随机森林实现 MATLAB

matlab 中随机森林工具箱的下载地址&#xff1a;http://code.google.com/p/randomforest-matlab/downloads/detail?nameWindows-Precompiled-RF_MexStandalone-v0.02-.zip&can2&q%% 基于随机森林思想的组合分类器设计%% 清空环境变量clear allclcwarning off%% 导入数…

MATLAB电压不平衡,电力系统不对称故障计算的Matlab算法程序

NF1;for i11:NFclear;n19;n29;n09;nl115;nl215;nl015;Lfinput(请输入短路类型(单相接地短路输入‘1’&#xff0c;两相短路输入‘2’&#xff0c;两相短路接地输入‘3’):Lf);f7;If0;zf0;zg0;B1 [0 1 0.0553i 0 1 0 ;0 2 0.1228i 0 1 0;0 3 0.1785i 0 1 0 ;1 4 0.0476i 0 1.050…

matlab示波器有功功率,巧用示波器计算功率-测试测量-与非网

示波器主要用于测量电流和电压&#xff0c;然后通过一系列魔术般的数学公式就可以计算出功率。遗憾的是&#xff0c;功率有许多种类&#xff1a;瞬时功率、有功功率、视在功率和无功功率。这么多的功率术语经常让人感到困惑。本文介绍了如何在Teledyne LeCroy HDO 6000示波器上…

matlab ctrb(),4.8Matlab问题能控能观解释.ppt

Ch.4 线性系统的能控性和能观性 Matlab问题(1/1) 4.8 Matlab问题 本章涉及的计算问题主要有 状态能控性/能观性判定、 系统能控能观分解、 能控/能观规范形变换以及 能控/能观规范形实现。 下面分别介绍基于Matlab的上述问题的程序编制和计算方法。 状态能控性与能观性判定 (1/…

matlab如何导入多文本数据,将文本文件中的混合数据导入表

样本文件概述样本文件 outages.csv 包含表示美国电力中断的数据。文件的前几行如下&#xff1a;Region,OutageTime,Loss,Customers,RestorationTime,CauseSouthWest,2002-01-20 11:49,672,2902379,2002-01-24 21:58,winter stormSouthEast,2002-01-30 01:18,796,336436,2002-02…

php 表单提交文件大小,PHP如何通过表单直接提交大文件详解

PHP如何通过表单直接提交大文件详解前言我想通过表单直接提交大文件&#xff0c;django 那边我就是这么干的。而对于 php 来说&#xff0c;我认为尽管可以设置最大上传的大小&#xff0c;但最大也无法超过内存大小&#xff0c;因为它无法把文件内容都放到 php://input 里面。直…

wordpress url index.php,WordPress对URL的路由解析过程详解

本文说明WP 对URL rewrite并生成当前请求的过程. 实际内容并不复杂, 说的比较啰嗦啦…关于Query Vars这是Wordpress全部代码中最重要的变量,所谓的query vars是一系列变量集合. WP通过解析URL设定query vars, 并通过分析query vars值决定显示那些文章,设定标志位等.所谓标志位是…

matlab m文件的编写,Matlab实验报告(四)M文件的编写.doc

Matlab实验报告(四)M文件的编写.doc实验目的学习MATLAB屮的关系运算和逻辑运算&#xff0c;掌握它们的表达形式和川法。掌握MATLAB中的选择结构和循环结构。学会用MATLAB进行M文件的编写和调用。—、预备知识关系和逻辑运算关系运算符用来完成关系运算&#xff0c;在控制程序流…

php登陆项目,ThinkPHP6项目基操(14.实战部分 中间件处理登录流程)

一、定义中间件namespace app\middleware;class Check{public function handle($request, \Closure $next){if ($request->param(name) think) {return redirect(index/think);}return $next($request);}}中间件类可以随意命名&#xff0c;中间件的入口执行方法必须是handl…

刻意学习之道

所谓刻意学习&#xff0c;不是简单的指所谓的“一万小时定律”&#xff0c;而是要走出自己能力的舒适区&#xff0c;挑战自己的极限&#xff0c;向高人学习&#xff0c;从而得以让个人进步突飞猛进&#xff01;

PHP Calendar 函数,wordpress函数get_calendar()用法示例

get_calendar( bool $initial true, bool $echo true )Display calendar with days that have posts as links.描述The calendar is cached, which will be retrieved, if it exists. If there are no posts for the month, then it will not be displayed.参数$initial(bool…

第三届蓝桥杯决赛真题---数量周期

【结果填空】(满分9分)复杂现象背后的推动力&#xff0c;可能是极其简单的原理。科学的目标之一就是发现纷繁复杂的自然现象背后的简单法则。爱因斯坦的相对论是这方面的典范例证。很早的时候&#xff0c;生物学家观察某区域某种昆虫的数量&#xff08;称为虫口数&#xff09;之…

php asserttrue,PHP8.0的新特性:错误处理方面已经改进

1 系统函数引发TypeError和ValueError异常一.TypeError和ValueError改进作用#在PHP 8中&#xff0c;内部函数参数强制执行类型和值验证&#xff0c;如果不允许使用预期的类型或值&#xff0c;则将抛出TypeError或ValueError异常错误.#在PHP 8之前&#xff0c;这会导致PHP警告.1…

蓝桥杯第七届决赛之---阶乘位数

阶乘位数9的阶乘等于&#xff1a;362880它的二进制表示为&#xff1a;1011000100110000000这个数字共有19位。请你计算&#xff0c;9999 的阶乘的二进制表示一共有多少位&#xff1f; 思路总结&#xff1a; 根据平时做题规律得到如下规律&#xff1a;public class SwingDesign …

php 用户授权访问控制,用户权限访问控制功能

摘要&#xff1a;<?php namespace app\admins\controller;use think\Controller;use Util\SysDb;class Home extends Base{public function index(){&nbs<?php namespace app\admins\controller;use think\Controller;use Util\SysDb;class Home extends Base{publ…

蓝桥杯之--神秘三位数

有这样一个3位数&#xff0c;组成它的3个数字阶乘之和正好等于它本身。 即&#xff1a;abc a! b! c! 请找出所有满足要求的三位数.审好题很重要&#xff1a;三位数而非&#xff0c;三位数的个数 先写出一个函数求出某个数的阶乘&#xff0c;在跟别求出一个三位数的个十百位&…