无限级分类和打印磁盘文件目录

一、无限级分类
 -- 创建表
create table it_category (
cat_id int unsigned primary key auto_increment,
cat_name varchar(50) default ‘‘,
sort_order int default 0,
parent_id int unsigned
);
-- 插入记录
insert into it_category values (75, ‘分类KKK‘, 50, 0);
insert into it_category values (12, ‘分类FFF‘, 50, 75);
insert into it_category values (77, ‘分类AAA‘, 50, 75);
insert into it_category values (34, ‘分类XXX‘, 50, 12);
insert into it_category values (35, ‘分类HHH‘, 50, 12);
insert into it_category values (9, ‘分类QQQ‘, 50, 77);
insert into it_category values (28, ‘分类JJJ‘, 50, 35);
insert into it_category values (19, ‘分类MMM‘, 50, 35);

<?php
//一、这是老师讲的
//首先,得到所有分类数据
mysql_connect(‘127.0.0.1:3306‘, ‘root‘, ‘1234abcd‘);
$sql = "select * from itcast_shop.it_category where 1 order by sort_order";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
    $list[] = $row;
}

//然后,调用递归查找函数
$tree = getTree($list, 0, 0);

//最后,遍历显示
foreach ($tree as $row) {
    echo str_repeat(‘&nbsp;&nbsp;‘, $row[‘deep‘]);
    echo $row[‘cat_name‘];
    echo ‘<br>‘;
}

function getTree($arr, $p_id, $deep = 0) {
    static $tree = array();
    foreach ($arr as $row) {
        if ($row[‘parent_id‘] == $p_id) {
            $row[‘deep‘] = $deep;
            $tree[] = $row;
            //找到了一条符合条件的,马上递归向更深层次查找!查找完毕再回来继续本foreach
            getTree($arr, $row[‘cat_id‘], $deep + 1);
        }
    }

//foreach执行完毕,返回结果
    return $tree;
}

---------------------------------换个方法------------------------------

<?php

//二、有朋友迷惑于递归函数的return $tree;
//其实递归进去以后,这个return没什么用,因为$tree已经是静态局部变量
//return的作用是foreach执行完毕,返回查找到的数据
//*我们不用return,把$tree作为超全局变量看看
//首先,得到所有分类数据
mysql_connect(‘127.0.0.1:3306‘, ‘root‘, ‘1234abcd‘);
$sql = "select * from itcast_shop.it_category where 1 order by sort_order";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
    $list[] = $row;
}

//然后,调用递归查找函数
getTree($list, 0, 0);

//最后,遍历显示
foreach ($tree as $row) {
    echo str_repeat(‘&nbsp;&nbsp;‘, $row[‘deep‘]);
    echo $row[‘cat_name‘];
    echo ‘<br>‘;
}

function getTree($arr, $p_id, $deep = 0) {
    foreach ($arr as $row) {
        if ($row[‘parent_id‘] == $p_id) {
            $row[‘deep‘] = $deep;
            $GLOBALS[‘tree‘][] = $row;
            //找到了一条符合条件的,马上递归向更深层次查找!查找完毕再回来继续本foreach
            getTree($arr, $row[‘cat_id‘], $deep + 1);
        }
    }
}

二、用php实现打印磁盘文件目录
<?php
function dirTree($path, $deep = 0) {
    $dir_handle = opendir($path);

while (($file = readdir($dir_handle)) !== FALSE) {
        if ($file == ‘.‘ || $file == ‘..‘) {

} else {
            if (is_dir($path . ‘/‘ . $file)) {
                echo str_repeat(‘&nbsp;&nbsp;&nbsp;‘, $deep);
                echo ‘+‘, $file, ‘<br />‘;
                dirTree($path . ‘/‘ . $file, $deep + 1);
            } else {
                echo str_repeat(‘&nbsp;&nbsp;&nbsp;‘, $deep);
                echo $file, ‘<br />‘;
            }
        }
    }
}

$path = ‘D:\amp\apache\htdocs\study‘;
dirTree($path);

时间: 2024-11-05 01:01:54

无限级分类和打印磁盘文件目录的相关文章

mysql 无限级分类实现思路

第一种方案: 使用递归算法,也是使用频率最多的,大部分开源程序也是这么处理,不过一般都只用到四级分类. 这种算法的数据库结构设计最为简单.category表中一个字段id,一个字段fid(父id).这样可以根据WHERE id = fid来判断上一级内容,运用递归至最顶层. 分析:通过这种数据库设计出的无限级,可以说读取的时候相当费劲,所以大部分的程序最多3-4级分类,这就足以满足需求,从而一次性读出所有的数据,再对得到数组或者对象进行递归.本身负荷还是没太大问题.但是如果分类到更多级,那是不可

无限级分类实现思路 (组织树的分级管理)

关于该问题,暂时自己还没有深入研究,在网上找到几种解决方案,各有优缺点. 第一种方案: 使用递归算法,也是使用频率最多的,大部分开源程序也是这么处理,不过一般都只用到四级分类.这种算法的数据库结构设计最为简单.category表中一个字段id,一个字段fid(父id).这样可以根据WHERE id = fid来判断上一级内容,运用递归至最顶层. 分析:通过这种数据库设计出的无限级,可以说读取的时候相当费劲,所以大部分的程序最多3-4级分类,这就足以满足需求,从而一次性读出所有的数据,再对得到数组

无限级分类实现思路

无限级分类实现思路 关于该问题,暂时自己还没有深入研究,在网上找到几种解决方案,各有优缺点. 第一种方案: 使用递归算法,也是使用频率最多的,大部分开源程序也是这么处理,不过一般都只用到四级分类.这种算法的数据库结构设计最为简单.category表中一个字段id,一个字段fid(父id).这样可以根据WHERE id = fid来判断上一级内容,运用递归至最顶层. 分析:通过这种数据库设计出的无限级,可以说读取的时候相当费劲,所以大部分的程序最多3-4级分类,这就足以满足需求,从而一次性读出所有

一道无限级分类题的 PHP 实现

今天有网友出了道题: 给出如下的父子结构(你可以用你所用语言的类似结构来描述,第一列是父,第二列是子),将其梳理成类似如图的层次父子结构. origin = [('A112', 'A1122'), ('A', 'A1'), ('A', 'A2'), ('A1', 'A11'), ('A2', 'A21'), ('A2', 'A22'), ('A', 'A3'), ('A22', 'A221'), ('A11', 'A111'), ('A21', 'A211'), ('A11', 'A112'),

php利用递归函数实现无限级分类

相信很多学php的很多小伙伴都会尝试做一个网上商城作为提升自己技术的一种途径.各种对商品分类,商品名之类的操作应该是得心应手,那么就可以尝试下无限级分类列表的制作了. 什么是无限级分类? 无限级分类是一种分类技巧,例如部门组织,文章分类,学科分类等常用到无限级分类,将其简单理解成分类就好了.其实我们仔细想一下,生活中的分类简直太多了,衣服可以分为男装和女装,也可以分为上衣和裤子,也可以根据年龄段分类.分类无处不在,分类显得“无限”.我这里就不说无限分类的必要性了. 无限级分类原理简介 无限分类看

(实用篇)PHP递归实现无限级分类

在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 递归,简单的说就是一段程序代码的重复调用,当把代码写到一个自定义函数中,将参数等变量保存,函数中重复调用函数,直到达到某个条件才跳出,返回相应的数据. 首先

夺命雷公狗---无限级分类NO2

<?php header("Content-Type:text/html;charset=utf-8"); /* 无限级分类.牵扯2个应用 0是-找指定栏目的子栏目 1是-找指定栏目的子孙栏目,即子孙树 2是-找指定栏目的父栏目/父父栏目....顶级栏目,即家谱树 */ $aarr = array( array('id'=>1,'name'=>'安徽','pid'=>0), array('id'=>2,'name'=>'海淀','pid'=>7

夺命雷公狗---无限级分类NO3

<?php header("Content-Type:text/html;charset=utf-8"); /* 无限级分类.牵扯2个应用 0是-找指定栏目的子栏目 1是-找指定栏目的子孙栏目,即子孙树 2是-找指定栏目的父栏目/父父栏目....顶级栏目,即家谱树 */ $aarr = array( array('id'=>1,'name'=>'安徽','pid'=>0), array('id'=>2,'name'=>'海淀','pid'=>7

无限级分类功能实践

在一般的web开发中,无论是一般的企业建站,内部OA,电商,无限级分类都是一种很常见的功能. 实现该业务常见有三种(本人已知)方式,分别有其不同的优缺点,一般最常用是第一种,接下来分别简单介绍其数据结构和大体实现. 第一种: 表结构 字段 类型 主键 id int 是 parent_id int 否 value varchar 否 CREATE TABLE `NewTable` ( `id` int UNSIGNED NOT NULL , `parent_id` int UNSIGNED NOT