无限级别分类

<?php
header(‘Content-type:text/html;charset=utf8‘);

$address = array(
    array(‘id‘=>1  , ‘address‘=>‘安徽‘ , ‘pid‘ => 0),
    array(‘id‘=>2  , ‘address‘=>‘江苏‘ , ‘pid‘ => 0),
    array(‘id‘=>3  , ‘address‘=>‘合肥‘ , ‘pid‘ => 1),
    array(‘id‘=>4  , ‘address‘=>‘庐阳区‘ , ‘pid‘ => 3),
    array(‘id‘=>5  , ‘address‘=>‘大杨镇‘ , ‘pid‘ => 4),
    array(‘id‘=>6  , ‘address‘=>‘南京‘ , ‘pid‘ => 2),
    array(‘id‘=>7  , ‘address‘=>‘玄武区‘ , ‘pid‘ => 6),
    array(‘id‘=>8  , ‘address‘=>‘梅园新村街道‘, ‘pid‘ => 7),
    array(‘id‘=>9  , ‘address‘=>‘上海‘ , ‘pid‘ => 0),
    array(‘id‘=>10 , ‘address‘=>‘黄浦区‘ , ‘pid‘ => 9),
    array(‘id‘=>11 , ‘address‘=>‘外滩‘ , ‘pid‘ => 10),
    array(‘id‘=>12 , ‘address‘=>‘安庆‘ , ‘pid‘ => 1)
);

//$tree = [];
function vTree($data, $pid = 0, $step = 0, &$tree = []){
        foreach ($data as $key => $val) {
            if ($val[‘pid‘] == $pid) {
                $val[‘address‘] = str_repeat(‘-‘, $step) . "&nbsp;" . $val[‘address‘];
                $tree[] = $val;
                vTree($data, $val[‘id‘], $step + 1, $tree);
            }
        }

        return $tree;
    }

$data = vTree($address);

foreach ($data as $key => $val) {
    echo $val[‘address‘] . ‘<br />‘;
}

function dump($data){
    echo "<pre>";
    print_r($data);
    echo "</pre>";
}

?>

安徽- 合肥-- 庐阳区--- 大杨镇- 安庆 江苏- 南京-- 玄武区--- 梅园新村街道 上海- 黄浦区-- 外滩

原文地址:https://www.cnblogs.com/pansidong/p/10420795.html

时间: 2025-01-16 08:56:00

无限级别分类的相关文章

php 用递归实现的无限级别分类

<?php header("Content-type:text/html; charset=utf-8"); /** * * @category contry_category 实现一个无限级别分类,类似种类的划分,常用在栏目导航 * */ /** +-------------------------------------------------------------------------------+ |             id       name        

无限级别分类嵌套格式抓取

select id,ruid,nickname,telphone from tf_user limit 30; +----+------+------------+-------------+ | id | ruid | nickname | telphone | +----+------+------------+-------------+ | 1 | 0 | 候淑娥 | 15852052228 | | 2 | 1 | 候淑娥1 | 15852052228 | | 3 | 2 | 候淑娥2

PHP无限极分类的实现(不使用递归)

无限极分类在开发中经常使用,例如:部门结构.文章分类.无限极分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式: 查找分类A下面所有分类包含的文章. 1.实现原理 在<无限级分类实现思路>一文中介绍了几种常见的实现方法,各有利弊.其中“改进前序遍历树”数据结构,便于输出和查询,但是在移动分类和常规理解上有些复杂. 2.数据结构 id fid title 1 0 中国 2 1 江苏 3 1 安徽 4 8 江阴 5 3 芜湖 6 3 合肥 7 3 蚌埠 8 2 无

DotNet菜鸟入门之无限极分类(一)设计篇

写这个教程的原因,是因为,无限极分类,在许多项目中,都用得到.而对于新手来说,不是很好理解,同时,操作上也有一些误区或者不当之处.所以我就斗胆,抛砖引玉一下,已一个常见的后台左侧频道树为例子,讲解一下剖析一下无限极分类的实战操作. 既然是写给菜鸟的,那么我就不话结构图了,直接文字+代码来说明吧. 正文 无限极分类的关键就在于数据库设计时,进行了父类编号的记录,从而把所有的分类,链接了起来,成为一个链表样式的结构. 这次我要讲的无限极分类设计如下: (图1) 创建的表的sql语句如下,具体字段的说

PHP实现无限极分类的两种方式,递归和引用

面试的时候被问到无限极分类的设计和实现,比较常见的做法是在建表的时候,增加一个PID字段用来区别自己所属的分类 $array = array( array('id' => 1, 'pid' => 0, 'name' => '河北省'), array('id' => 2, 'pid' => 0, 'name' => '北京市'), array('id' => 3, 'pid' => 1, 'name' => '邯郸市'), array('id' =>

夺命雷公狗ThinkPHP项目之----企业网站8之栏目的添加完善(无限极分类的完成)

我们刚才只是完成了添加的一部分,但是我们的上级分类也不能永远都是只有一个死的嘛,所以我们需要对她进行修改: 我们先将add方法里面的数据查出来再说: 然后在模板页进行遍历: 展示效果如下所示: 虽然是出现了,但是没有向我们平常时候见到的无限极分类一样噢,一般比如分类 多多,分类下面的 好多美女啊 是多多的下级分类,那么好多美女啊他前面是有几个空格之类的隔开, 那么我们就需要在model层里面对她进行排序的设置了: <?php namespace Admin\Model; use Think\Mo

PHP无限极分类

概述 ??在实际工作中,经常要用到无限极分类.如导航表等等.到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱,代码很多,那些都不靠谱,还是自己捣鼓捣鼓无限极分类了.下面介绍两种无限极分类:递归,使用引用 数据准备 //初始化原始数据(id=>编号,name=>显示名称,pid=>父级目录id,sort=>排序顺序) $data[1] = array('id'=>'1','name'=>'一级目录A','pid'=>'0','sort'=>'1

php递归无限极分类

递归无限级分类有几种形式,我这里只举例比较常用的三种: 第一种:返回有排序的数组: <?php $data = array( 1 => array( 'id' => 1, 'pid' => 0, 'user_name' => 'one', ), 2 => array( 'id' => 2, 'pid' => 1, 'user_name' => 'two', ), 3 => array( 'id' => 3, 'pid' => 1, '

递归与无限极分类

在函数内部调用本身,且在调用时要做判断. 例:输出1~9 function deeploop(&$i=1){   //引用传值,防止递归时从1开始 echo  $i; $i++; if($i < 10){             //条件判断,防止无限递归 deeploop($i); } } 2.无限极分类原理:每次分类都需要记录它的父级id,如果是顶级,则父级id为0,通过父级id,一层一层往下查. 首先从数据库中取出结果集,把结果集中的pid与顶级的pid开始,然后确定顶级父级.依次往下