使用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 相关文章推荐
smarty实例教程
Nov 19 PHP
file_get_contents获取不到网页内容的解决方法
Mar 07 PHP
解析PHP无限级分类方法及代码
Jun 21 PHP
解析php通过cookies获取远程网页的指定代码
Jun 25 PHP
PHP过滤★等特殊符号的正则
Jan 27 PHP
fckeditor上传文件按日期存放及重命名方法
May 22 PHP
php实现学生管理系统
Mar 21 PHP
php fseek函数读取大文件两种方法
Oct 12 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
PHP实现微信红包金额拆分试玩的算法示例
Apr 07 PHP
Laravel框架分页实现方法分析
Jun 12 PHP
深入学习微信网址链接解封的防封原理visit_type
Aug 15 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
BBS(php &amp; mysql)完整版(一)
2006/10/09 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
jQuery级联操作绑定事件实例
2014/09/02 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
详解nodejs 文本操作模块-fs模块(四)
2016/12/22 NodeJs
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
python之super的使用小结
2018/08/13 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
pycharm 安装JPype的教程
2019/08/08 Python
python 并发下载器实现方法示例
2019/11/22 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
欧缇丽加拿大官方网站:Caudalie加拿大
2019/07/18 全球购物
Elizabeth Gage官网:英国最好的珠宝设计之一
2020/09/26 全球购物
创业计划书中要认真思考的问题
2013/12/28 职场文书
大学生学年自我鉴定
2014/02/10 职场文书
2014年毕业演讲稿范文
2014/05/13 职场文书
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
导游词之山东孔庙
2019/11/04 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
Python 循环读取数据内存不足的解决方案
2021/05/25 Python
pandas中DataFrame检测重复值的实现
2021/05/26 Python
Java实现二分搜索树的示例代码
2022/03/17 Java/Android