当前位置:首页 » 编程语言 » php递归分类

php递归分类

发布时间: 2022-09-28 03:29:32

php 几种常用的递归 无限极分类

/**
*递归实现无限极分类
*@param$array分类数据
*@param$pid父ID
*@param$level分类级别
*@return$list分好类的数组直接遍历即可$level可以用来遍历缩进
*/

functiongetTree($array,$pid=0,$level=0){

//声明静态数组,避免递归调用时,多次声明导致数组覆盖
static$list=[];foreach($arrayas$key=>$value){//第一次遍历,找到父节点为根节点的节点也就是pid=0的节点
if($value['pid']==$pid){//父节点为根节点的节点,级别为0,也就是第一级
$value['level']=$level;//把数组放到list中
$list[]=$value;//把这个节点从数组中移除,减少后续递归消耗
unset($array[$key]);//开始递归,查找父ID为该节点ID的节点,级别则为原级别+1
getTree($array,$value['id'],$level+1);

}
}

② php递归查询不会,,求教。就是一个三级分类传个ID找到他的上级,还有父级。。

这种类型的数据,一般数据库中,一张表会有存在两个字段,一个是它本身id,另一个是它的父级parent_id。
既然要找到它的祖父级,sql语句这样写:
$id = empty($_POST['id'])?'':$_POST['id'];
$parent_id = get_parent_id($id);
$p_p_id = get_parent_id($parent_id);
function get_parent_id($id){
$sql = "select parent_id from ecs_table1 where id=" . $id;
return($GLOBALS['db']->getone($sql ));
}
递归,就是根据现有的id,重复取。
上面get_parent_id只是获取父id,当然,你可以写一个直接获取祖父id的函数。
不过,现在大部分php网站,都只会有获取父类的函数,想discuz,ecshop等。获取祖父id,就是不断的获取该id的父id。

③ PHP 无限级分类, 二维数组, 递归调用问题

$subs = array();
表示定义并初始化一个数组,
这样后面的循环里就可以对这个数组进行操作,比如添加数据,
不加也能正常工作,但是不推荐,
初始化变量是一个良好的开发习惯

④ 几十万条数据用PHP递归能实现无限级分类吗

数据量大就使用分页和异步查询,一次查询全部出来 ,内存肯定是吃不消的,运行时间也会比较久。

⑤ php 递归分类 $arr = array() 具体作用

$arr = array(); 只是 定义 数组 而且是在 循环外边定义的 当然不会清空数组,

就是在循环外边定义一个数组
然后在 循环里边 给它赋值。。

⑥ 什么是php递归函数及简单实例讲解

递归其实就是“一个函数的自调用” 在这个“自调用”的过程中,必须要有一个变化的“参数”,当这个“参数”达到你的期望值的时候,终止该“自调用”过程 拿楼主的程序来说 demo($n)内部又有调用demo($n-1),构成了“自调用” 且,$n又有一个“期望值

⑦ php怎么用递归做商城类三级导航菜单

字符串和数组方式无限级分类。

如 字符串

header('Content-type: text/html; charset=utf-8');
include_once('connect.php');
function get_str($id=0){
global $str;
$sql="select id,title from class where pid=$id";
$result=mysql_query($sql);
if($result&&mysql_affected_rows()){

$str.="<ul>";
while($row=mysql_fetch_array($result)){

$str.="<li>".$row['id']."--".$row['title']."</li>";
get_str($row['id']);
}
$str.="</ul>";
}
return $str;
}
echo get_str(0);

⑧ php无限极分类实现的方法

初始化的数据

//初始化原始数据(id=>编号,name=>显示名称,pid=>父级目录id,sort=>排序顺序)$data[1]=array('id'=>'1','name'=>'一级目录A','pid'=>'0','sort'=>'1');
$data[2]=array('id'=>'2','name'=>'一级目录B','pid'=>'0','sort'=>'2');
$data[3]=array('id'=>'3','name'=>'一级目录C','pid'=>'0','sort'=>'3');
$data[4]=array('id'=>'4','name'=>'一级目录D','pid'=>'0','sort'=>'4');
$data[5]=array('id'=>'5','name'=>'二级目录A-1','pid'=>'1','sort'=>'1');
$data[6]=array('id'=>'6','name'=>'二级目录A-2','pid'=>'1','sort'=>'2');
$data[7]=array('id'=>'7','name'=>'二级目录A-3','pid'=>'1','sort'=>'3');
$data[8]=array('id'=>'8','name'=>'二级目录B-1','pid'=>'2','sort'=>'1');
$data[9]=array('id'=>'9','name'=>'二级目录B-2','pid'=>'2','sort'=>'2');
$data[10]=array('id'=>'10','name'=>'二级目录B-3','pid'=>'2','sort'=>'3');
$data[11]=array('id'=>'11','name'=>'二级目录C-1','pid'=>'3','sort'=>'2');
$data[12]=array('id'=>'12','name'=>'二级目录D-1','pid'=>'4','sort'=>'1');
$data[13]=array('id'=>'13','name'=>'二级目录D-2','pid'=>'4','sort'=>'2');
$data[14]=array('id'=>'14','name'=>'三级目录A-2-1','pid'=>'6','sort'=>'1');
$data[15]=array('id'=>'15','name'=>'三级目录A-2-2','pid'=>'6','sort'=>'2');
$data[16]=array('id'=>'16','name'=>'三级目录C-1-1','pid'=>'11','sort'=>'1');
$data[17]=array('id'=>'17','name'=>'三级目录B-2-1','pid'=>'9','sort'=>'2');

显示树结构

functionprintTree($data,$level=0){foreach($dataas$key=>$value){for($i=0;$i<=$level;$i++){echo'&emsp;&emsp;';
}echo$value['name'];echo'<br>';if(!empty($value['children'])){
printTree($value['children'],$level+1);
}
}
}

使用递归的方式获取无限极分类数组

functiongetNodeTree(&$list,&$tree,$pid=0){foreach($listas$key=>$value){if($pid==$value['pid']){
$tree[$value['id']]=$value;unset($list[$key]);
getNodeTree($list,$tree[$value['id']]['children'],$value['id']);
}
}
}

使用引用-无限极分类

functioncreateNodeTree(&$list,&$tree){foreach($listas$key=>$node){if(isset($list[$node['pid']])){
$list[$node['pid']]['children'][]=&$list[$key];
}else{
$tree[]=&$list[$node['id']];
}
}
}

调用

//递归-无限极分类调用getNodeTree($data,$tree);
printTree($tree);//使用引用-无限极分类调用createNodeTree($data,$tree);
printTree($tree);

⑨ PHP递归无限分类的 如何统计总条数 以及对显示的结果进行分页比如设置为每页显示10个 。

每个节点都要记录子节点的数量c。每新增一个节点都要对各父和祖节点的子节点计数加1。这样根节点会有总数的记录。
这样递归遍历时也可以根据子节点数量c的来确定读取的数量限制。比如 读取条数计数<10 就继续递归
在每个节点的表上 增加子节点的id集或计数,增加根节点到父节点路径,会方便这些操作。

热点内容
小悟云服务器 发布:2024-12-26 14:41:03 浏览:189
linux系统备份与还原 发布:2024-12-26 14:40:14 浏览:95
云服务器版本过高如何降低 发布:2024-12-26 14:35:27 浏览:340
安卓手机上怎么加下划线 发布:2024-12-26 14:26:50 浏览:495
c语言设计时钟 发布:2024-12-26 14:15:54 浏览:170
java派生 发布:2024-12-26 14:11:11 浏览:464
python核心技术 发布:2024-12-26 13:54:06 浏览:202
安卓智能显示如何设置 发布:2024-12-26 13:54:01 浏览:79
知道服务器ip和密码怎么办 发布:2024-12-26 13:51:00 浏览:111
联想小新pro14怎么查配置 发布:2024-12-26 13:48:39 浏览:439