使用PHP数组实现无限分类,不使用数据库,不使用递归.


Posted in PHP onDecember 09, 2006
<?php class cat 
{ 
    public $data; 
    public function __construct()  
    { 
        @include "data.php"; 
        $this->data = $class; 
    } 

    public function CreateSortLevel($fatherlevel) 
    { 
        if(empty($fatherlevel)) 
        { 
            if(is_array($this->data)) 
            { 
                $fast_level = array(); 
                foreach($this->data as $value) 
                { 
                    if(strlen($value["sortlevel"]) == 3) 
                    { 
                        $fast_level[] = $value["sortlevel"]; 
                    } 
                } 
                $max_fast_level = max($fast_level); 
                unset($fast_level); 
                $sub   = ceil($max_fast_level) + 1; 
                switch(strlen($sub)) 
                { 
                    case 1: 
                        return "00{$sub}"; 
                        break; 
                    case 2: 
                        return "0{$sub}"; 
                        break; 
                    case 3: 
                        return $sub; 
                        break; 
                } 
            } 
            else 
            { 
                return "001"; 
            } 
        } 
        foreach($this->data as $val) 
        { 
            if(eregi("^".$fatherlevel.".{3}$",$val["sortlevel"])) 
            { 
                $level[] = $val["sortlevel"]; 
            } 
        } 
        if(is_array($level)) 
        { 
            $max_two_level = max($level); 
            $sub   = ceil(substr($max_two_level,-3)) + 1; 
            switch(strlen($sub)) 
            { 
                case 1: 
                    return substr($max_two_level,0,strlen($max_two_level)-1).$sub; 
                    break; 
                case 2: 
                    return substr($max_two_level,0,strlen($max_two_level)-2).$sub; 
                    break; 
                case 3: 
                    return substr($max_two_level,0,strlen($max_two_level)-3).$sub; 
                    break; 
            } 
        } 
        else 
        { 
            return $fatherlevel."001"; 
        } 
    } 
    public function orders() 
    { 
        $op = $this->data; 
        $this->array_usort($op,"sortlevel",SORT_ASC); 
        return $op; 
    } 
    public function add_cat($sortname,$sortlevel) 
    { 
        $data = time(); 
        $arr = array 
        ( 
            "{$data}" => array 
            ( 
              "sortname"  => $sortname, 
              "sortlevel" => $this->CreateSortLevel($sortlevel) 
            ) 
         ); 
        $rs = $this->data + $arr; 
        $this->add_wirte($rs); 
    } 
    private function array_usort(&$array) 
    { 
        $args = func_get_args(); 
        for($i=1,$cmd='',$size=count($args);$i<$size;$i++) 
        { 
            $num   = $i; 
            $order = ""; 
            $con   = "@strcmp($a['$args[$num]'],$b['$args[$num]'])"; 
            while(++$i < $size) 
            { 
                if($args[$i] === SORT_NUMERIC) 
                { 
                    $con = "($a['$args[$num]']-$b['$args[$num]'])"; 
                } 
                else if($args[$i] === SORT_DESC) 
                { 
                    $order = "-1*"; 
                } 
                else if(is_string($args[$i])) 
                { 
                    $i--; 
                    break; 
                } 
            } 
            $cmd .= "if($num = $con)return $order$num;else "; 
            if($order != '') 
            { 
                $i++; 
            } 
        } 
        @usort($array,@create_function('$a,$b',"$cmd return 0;")); 
    } 
    public function wirte($sortname,$sortlevel) 
    { 
        $array  = "<?phprn"; 
        $array .= '$class = array'."rn(rn"; 
        $array .= '  "'.time().'" => array'."rn"; 
        $array .= '      ('."rn"; 
        $array .= '           "sortname" => "'.$sortname.'"'.",rn"; 
        $array .= '           "sortlevel" => "'.$this->CreateSortLevel($sortlevel).'"'."rn"; 
        $array .= '      )'."rn"; 
        $array .= ")rn?>"; 
        file_put_contents("data.php",$array); 
    } 
    public function add_wirte($rs) 
    { 
        $array  = "<?phprn"; 
        $array .= '$class = array'."rn(rn"; 
        foreach($rs as $key=>$value) 
        { 
            $array .= "rn"; 
            $array .= '  "'.$key.'" => array'."rn"; 
            $array .= '      ('."rn"; 
            $array .= '           "sortname" => "'.$value["sortname"].'"'.",rn"; 
            $array .= '           "sortlevel" => "'.$value["sortlevel"].'"'."rn"; 
            $array .= '      ),'; 
        } 
        $array  = substr($array,0,-1); 
        $array .= "rn)rn?>"; 
        file_put_contents("data.php",$array); 
    } 
} 

$cat = new cat(); 
if($_GET["action"] == "add") 
{ 
    if(strlen($_POST["sortname"]) < 2) 
    { 
        echo '<script language="JavaScript">alert("请添加分类名字")</script>'; 
        echo '<script language="JavaScript">location.href="/cat.php?action=tpl"</script>'; 
        exit; 
    } 
    if(file_exists("data.php")) 
    { 
        $cat->add_cat($_POST["sortname"],$_POST["sortlevel"]); 
        echo '<script language="JavaScript">alert("添加成功")</script>'; 
        echo '<script language="JavaScript">location.href="/cat.php"</script>'; 
        exit; 
    } 
    else 
    { 
        $cat->wirte($_POST["sortname"],$_POST["sortlevel"]); 
        echo '<script language="JavaScript">alert("添加成功")</script>'; 
        echo '<script language="JavaScript">location.href="/cat.php"</script>'; 
        exit; 
        exit; 
    } 
} 
if($_GET["action"] == "tpl") 
{ 
    echo '<form id="form1" name="form1" method="post" action="cat.php?action=add">';"rn"; 
    echo '<select name="sortlevel">'."rn"; 
    echo '<option value="" selected="selected">根分类</option>'."rn"; 
    foreach($cat->orders() as $val) 
    { 
        echo '<option value="'.$val["sortlevel"].'">'; 
        $clevel = strlen(substr($val['sortlevel'],0,-3)); 
        for($i = 0; $i < $clevel; $i++) 
        { 
            echo "-"; 
        } 
        echo $val['sortname']."</option>rn"; 
    } 
    echo "</select>rn"; 
    echo '  <input name="sortname" type="text" id="sortname" />'."rn"; 
    echo '<input type="submit" name="Submit" value="提交" />'; 
    echo "</form>"; 
    exit; 
} 
foreach($cat->orders() as $value) 
{ 
    $level = strlen(substr($value['sortlevel'],0,-3)); 
    for($i = 0; $i < $level; $i++) 
    { 
        echo "-"; 
    } 
    echo $value["sortname"]; 
    echo "<br>"; 
} 
?>
PHP 相关文章推荐
DOMXML函数笔记
Oct 09 PHP
桌面中心(一)创建数据库
Oct 09 PHP
Discuz! Passport 通行证整合
Mar 27 PHP
PHP 加密与解密的斗争
Apr 17 PHP
php实现的仿阿里巴巴实现同类产品翻页
Dec 11 PHP
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
Mar 19 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
May 02 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 PHP
set_exception_handler函数在ThinkPHP中的用法
Oct 31 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
Nov 02 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
PHP文件打开关闭及读写操作示例解析
Aug 06 PHP
main.php
Dec 09 #PHP
global.php
Dec 09 #PHP
source.php查看源文件
Dec 09 #PHP
function.inc.php超越php
Dec 09 #PHP
粗略计算在线时间,bug:ip相同
Dec 09 #PHP
用PHP函数解决SQL injection
Dec 09 #PHP
php中处理模拟rewrite 效果
Dec 09 #PHP
You might like
php实现用户登陆简单实例
2017/04/04 PHP
javascript正则表达式中参数g(全局)的作用
2010/11/11 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
2015/04/07 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
2015/04/12 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
2016/05/19 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
微信小程序 toast 详解及实例代码
2016/11/09 Javascript
打字效果动画的4种实现方法(超简单)
2017/10/18 Javascript
如何封装Vue Element的table表格组件
2021/02/06 Vue.js
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
使用Python &amp; Flask 实现RESTful Web API的实例
2017/09/19 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
2021/02/19 Python
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
英语系本科生求职信范文
2013/12/18 职场文书
信息管理应届生求职信
2014/03/07 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
2014年感恩母亲演讲稿
2014/05/27 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
小学教代会开幕词
2016/03/04 职场文书
导游词之桂林山水
2019/09/20 职场文书
Python下opencv库的安装过程及问题汇总
2021/06/11 Python
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android
css3应用示例:新增的选择器
2022/03/16 HTML / CSS