无限级分类 递归和迭代
来源:互联网 发布:淘宝裤子褶皱平铺拍摄 编辑:程序博客网 时间:2024/06/05 15:03
<?php
header('content-type:text/html;charset=utf-8');
$list=Array ( Array ( 'id' => 1 ,'name' => 'A' ,'pid' => 0 ) , Array ( 'id' => 2 ,'name' => 'B' ,'pid' => 0 ) , Array ( 'id' => 3 ,'name' => 'C' ,'pid' => 1 ), Array ( 'id' => 4 ,'name' => 'D' ,'pid' => 1 ) , Array ( 'id' => 5 ,'name' => 'E' ,'pid' => 2 ) , Array ( 'id' => 6 ,'name' => 'F' ,'pid' => 2 ) , Array ( 'id' => 7 ,'name' => 'G' ,'pid' => 3 ) , Array ( 'id' => 8 ,'name' => 'H' ,'pid' => 3 ) , Array ( 'id' => 9 ,'name' => 'I' ,'pid' => 3 ) , Array ( 'id' => 10 ,'name' => 'J' ,'pid' => 4 ) , Array ( 'id' => 11 ,'name' => 'K' ,'pid' => 4 ), Array ( 'id' => 12 ,'name' => 'L' ,'pid' => 4 ) , Array ( 'id' => 13 ,'name' => 'M' ,'pid' => 5 ) , Array ( 'id' => 14 ,'name' => 'N' ,'pid' => 5 ) , Array ( 'id' => 15 ,'name' => 'O' ,'pid' => 5 ) , Array ( 'id' => 16 ,'name' => 'P' ,'pid' => 6 ) , Array ( 'id' => 17 ,'name' => 'Q' ,'pid' => 6 ) , Array ( 'id' => 18 ,'name' => 'R' ,'pid' => 6 ) , Array ( 'id' => 19 ,'name' => 'S' ,'pid' => 6 ) , Array ( 'id' => 20 ,'name' => 'T' ,'pid' => 0 ) , Array ( 'id' => 21 ,'name' => 'U' ,'pid' => 20 ) , Array ( 'id' => 22 ,'name' => 'V' ,'pid' => 20 ) , Array ( 'id' => 23 ,'name' => 'W' ,'pid' => 21 ) , Array ( 'id' => 24 ,'name' => 'X' ,'pid' => 21 ) , Array ( 'id' => 25 ,'name' => 'Y' ,'pid' => 22 ) , Array ( 'id' => 26 ,'name' => 'Z' ,'pid' => 22 ) );
echo "递归<br>";
function getTree($list,$parent,$level=0)
{
$tree=array();
foreach ($list as $value) {
if ($value['pid']==$parent) {
$value['level']=$level;
$tree[]=$value;
$tree=array_merge($tree,getTree($list,$value['id'],$level+1));
}
}
return $tree;
}
$data=getTree($list,0);
foreach ($data as $key => $value) {
echo str_repeat("——",$value['level']),$value['name'],'<br>';
}
echo "<hr>","迭代";
function iterate($list,$parent)
{
$tree=array();
while ($parent>0) {
foreach ($list as $key => $value) {
if ($value['id']==$parent) {
$tree[]=$value;
$parent=$value['pid'];
break;
}
}
}
return $tree;
}
header('content-type:text/html;charset=utf-8');
$list=Array ( Array ( 'id' => 1 ,'name' => 'A' ,'pid' => 0 ) , Array ( 'id' => 2 ,'name' => 'B' ,'pid' => 0 ) , Array ( 'id' => 3 ,'name' => 'C' ,'pid' => 1 ), Array ( 'id' => 4 ,'name' => 'D' ,'pid' => 1 ) , Array ( 'id' => 5 ,'name' => 'E' ,'pid' => 2 ) , Array ( 'id' => 6 ,'name' => 'F' ,'pid' => 2 ) , Array ( 'id' => 7 ,'name' => 'G' ,'pid' => 3 ) , Array ( 'id' => 8 ,'name' => 'H' ,'pid' => 3 ) , Array ( 'id' => 9 ,'name' => 'I' ,'pid' => 3 ) , Array ( 'id' => 10 ,'name' => 'J' ,'pid' => 4 ) , Array ( 'id' => 11 ,'name' => 'K' ,'pid' => 4 ), Array ( 'id' => 12 ,'name' => 'L' ,'pid' => 4 ) , Array ( 'id' => 13 ,'name' => 'M' ,'pid' => 5 ) , Array ( 'id' => 14 ,'name' => 'N' ,'pid' => 5 ) , Array ( 'id' => 15 ,'name' => 'O' ,'pid' => 5 ) , Array ( 'id' => 16 ,'name' => 'P' ,'pid' => 6 ) , Array ( 'id' => 17 ,'name' => 'Q' ,'pid' => 6 ) , Array ( 'id' => 18 ,'name' => 'R' ,'pid' => 6 ) , Array ( 'id' => 19 ,'name' => 'S' ,'pid' => 6 ) , Array ( 'id' => 20 ,'name' => 'T' ,'pid' => 0 ) , Array ( 'id' => 21 ,'name' => 'U' ,'pid' => 20 ) , Array ( 'id' => 22 ,'name' => 'V' ,'pid' => 20 ) , Array ( 'id' => 23 ,'name' => 'W' ,'pid' => 21 ) , Array ( 'id' => 24 ,'name' => 'X' ,'pid' => 21 ) , Array ( 'id' => 25 ,'name' => 'Y' ,'pid' => 22 ) , Array ( 'id' => 26 ,'name' => 'Z' ,'pid' => 22 ) );
echo "递归<br>";
function getTree($list,$parent,$level=0)
{
$tree=array();
foreach ($list as $value) {
if ($value['pid']==$parent) {
$value['level']=$level;
$tree[]=$value;
$tree=array_merge($tree,getTree($list,$value['id'],$level+1));
}
}
return $tree;
}
$data=getTree($list,0);
foreach ($data as $key => $value) {
echo str_repeat("——",$value['level']),$value['name'],'<br>';
}
echo "<hr>","迭代";
function iterate($list,$parent)
{
$tree=array();
while ($parent>0) {
foreach ($list as $key => $value) {
if ($value['id']==$parent) {
$tree[]=$value;
$parent=$value['pid'];
break;
}
}
}
return $tree;
}
var_dump(iterate($list,26));
echo "<hr>引用赋值<br>";
function tree($list)
{
$tree = array();
//第一步,将所有的分类id作为数组key,并创建children单元
foreach($list as $value){
$tree[$value['id']] = $value;
$tree[$value['id']]['children'] = array();
}
//第二步,利用引用,将每个分类添加到父类children数组中,这样一次遍历即可形成树形结构。
foreach ($tree as $key=>$value) {
if ($value['pid'] != 0) {
$tree[$value['pid']]['children'][] = &$tree[$key];
}
}
return $tree;
}
$data=tree($list);
print_r($data);
0 0
- 无限级分类 递归和迭代
- 无限极分类 递归和迭代源码
- php迭代和递归求子地区无限级分类数组
- 无限级分类之迭代查找子孙树
- 无限级分类之迭代查找家谱树
- 使用PHP引用实现无限分类思路(非递归迭代)
- 无限级分类-非递归
- 递归遍历无限级分类
- php实现无限级分类,通过循环和递归实现
- 以迭代(非递归)方式获取无限分类中所有的最后一层子节点数据
- 递归和迭代
- 递归和迭代
- 递归和迭代
- 递归和迭代
- 递归和迭代
- 递归和迭代
- 递归和迭代
- 递归和迭代
- Java中如何遍历Map对象的4种方法
- Linux 目录结构
- 并查集
- Same binary weight
- 简单实现链表1
- 无限级分类 递归和迭代
- 原生JS实现轮播图1---匀速动画
- 欢迎使用CSDN-markdown编辑器
- mac下用Zotero + 插件 + 坚果云 配置论文管理工具
- 一个简单的Android破解WIFI密码的方法(实用)
- #define min_per_hour 60
- USACO 2.3 货币系统(背包/生成函数)
- 测试下
- Java老手该当心的13个错误