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

php无限极分类递归

发布时间: 2022-08-18 22:38:12

❶ 感觉php的递归好难啊,特别是无限级分类,怎样可以很容易理解递归,理解无限级分类呀

递归很好理解啊,一般情况下都是用阶乘来入门的。
无级分类算法是典型的递归操作。但在实际开发一般用伪无级分类,无级分类当分类级次多,每个分类节点多的情况下效率不高。因此作为学数据结构算法,需要学一下无级分类的算法,如果是实际开发,用伪无级分类好一些。

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

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

❸ 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 递归问题,想要将数据按照无限极分类的样式显示出来

首先 将json 解码成数组, 用json_decode 函数 注意 一定要加上第二个参数 否则他会返回一个对象。接下来就是地递归了。这是一个最简单的递归只要逐个遍历即可。

下面是完整的代码:

$data=json_decode($str,true);
$options=getChildren($data);
functiongetChildren($parent,$deep=0){
foreach($parentas$row){
$data[]=array("id"=>$row['id'],"name"=>$row['name'],"pid"=>$row['parentid'],'deep'=>$deep);
if($row['childs']){
$data=array_merge($data,getChildren($row['childs'],$deep+1));
}
}
return$data;
}
?>
<selectname=""id="">
<?phpforeach($optionsas$row){?>
<optionvalue="<?phpecho$row['id']?>"><?phpechostr_pad("",$row['deep']*3,"-",STR_PAD_RIGHT);?><?phpecho$row['name'];?></option>
<?php}?>
</select>


以上代码已测试通过 效果图如下

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

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

❻ php递归无限极分类怎么弄

给个函数你,调用get_category()就是一个数组格式的结果
function get_category($parent_id=0){
$arr=array();
$sql = "select * from category where parent_id=$parent_id";//查询子级数据
$result = array(a_object,b_object,,,)=sql_query($sql);//查询结果一个数组或列表格式,自己完善。
if($result){
foreach($result as $re){//循环数组
if(get_category($re.id))//如果子级不为空
$re['child'] = get_category($re.id);
$arr[] = $re;
}
return $arr;
}

❼ 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递归无限分类,当前位置写法

<?php
$testArray = array();
function getSort($num,&$testArray){
$db = new mysqli("localhost","root","123456","test");
$sql = "select * from test where bid=".$num;
$result = $db->query($sql);
if($result){
$search = array();
while($row=$result->fetch_assoc()){
$testArray[] = $row['cloumnsname'];
$search[] = $row['id'];
}
foreach($search as $key=>$value){
getSort($value,$testArray);
}
}
}
$testArray[] = "首页";
getSort(0,$testArray);
$test = implode(">",$testArray);
echo $test;
?>
有不懂的可以问我!

❾ php无限分类 递归中的静态数组

将静态数组改为局部数组

❿ php无限极分类递归写入多维数组的方法

$catearray[$row->id] = array($row->id,$row->name,$row->depth));

$catearray[$level][$row->id] = array($row->id,$row->name,$row->depth));

热点内容
车辆办理解压要收费怎么处理 发布:2025-01-19 18:39:46 浏览:950
san存储柜 发布:2025-01-19 18:39:35 浏览:63
伏魔记安卓版怎么什么键都没有 发布:2025-01-19 18:38:54 浏览:901
lol声音文件夹 发布:2025-01-19 18:38:54 浏览:317
锐程cc尊贵版都有哪些配置 发布:2025-01-19 18:27:08 浏览:977
php手机网站 发布:2025-01-19 18:26:34 浏览:456
一加存储路径 发布:2025-01-19 18:21:01 浏览:446
sqlserver误删 发布:2025-01-19 18:21:00 浏览:649
球球安全中心动态密码在哪里 发布:2025-01-19 18:20:23 浏览:790
python读取config文件 发布:2025-01-19 18:15:10 浏览:458