使用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 相关文章推荐
PHP获取类中常量,属性,及方法列表的方法
Apr 09 PHP
PHP中的integer类型使用分析
Jul 27 PHP
thinkphp 多表 事务详解
Jun 17 PHP
php异步多线程swoole用法实例
Nov 14 PHP
PHP实现在线阅读PDF文件的方法
Jun 17 PHP
php中 ob_start等函数截取标准输出的方法
Jun 22 PHP
腾讯CMEM的PHP扩展编译安装方法
Sep 25 PHP
php ci 获取表单中多个同名input元素值的代码
Mar 25 PHP
php微信开发之带参数二维码的使用
Aug 03 PHP
PHP操作Redis常用技巧总结
Apr 24 PHP
PHP hebrev()函数用法讲解
Feb 21 PHP
PHP实现的杨辉三角求解算法分析
Mar 11 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
杏林同学录(九)
2006/10/09 PHP
PHP中文件缓存转内存缓存的方法
2011/12/06 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
IE 下的只读 innerHTML
2009/08/21 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
2012/09/11 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
jQuery Validate表单验证深入学习
2015/12/18 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
jQuery多选框选择数量限制方法
2017/02/08 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
[03:24]2014DOTA2国际邀请赛 神秘商店生意火爆
2014/07/18 DOTA
[50:02]完美世界DOTA2联赛PWL S2 Magma vs FTD 第三场 11.29
2020/12/03 DOTA
Python基础语法(Python基础知识点)
2016/02/28 Python
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
Python3使用PySynth制作音乐的方法
2019/09/09 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
python爬虫爬取某网站视频的示例代码
2021/02/20 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
纪检干部个人对照检查材料
2014/09/23 职场文书
2014年司法所工作总结
2014/11/22 职场文书
入党积极分子考察意见
2015/06/02 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
学校学期工作总结
2015/08/13 职场文书
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python