• 技术文章 >后端开发 >php教程

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

    2016-07-29 08:35:38原创296
    复制代码 代码如下:


    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 = " $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 = " $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 '';
    echo '';
    exit;
    }
    if(file_exists("data.php"))
    {
    $cat->add_cat($_POST["sortname"],$_POST["sortlevel"]);
    echo '';
    echo '';
    exit;
    }
    else
    {
    $cat->wirte($_POST["sortname"],$_POST["sortlevel"]);
    echo '';
    echo '';
    exit;
    exit;
    }
    }
    if($_GET["action"] == "tpl")
    {
    echo '

    ';"rn";
    echo 'rn";
    echo ' '."rn";
    echo '';
    echo "
    ";
    exit;
    }
    foreach($cat->orders() as $value)
    {
    $level = strlen(substr($value['sortlevel'],0,-3));
    for($i = 0; $i < $level; $i++)
    {
    echo "-";
    }
    echo $value["sortname"];
    echo "
    ";
    }
    ?>

    以上就介绍了 使用PHP数组实现无限分类,不使用数据库,不使用递归,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:nbsp array sortlevel gt sortname
    上一篇:解决 ajax缓存问题解决途径 下一篇:Breeze 文章管理系统 v100正式发布
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• PHP8.2最新进展,即将进行新特性冻结!• PHP8.2将有哪些改动(性能改进、新特性)!• 限制上传文件类型程序代码_PHP教程• 如何文档化你的PHP类(一)_PHP教程• php实现文件下载更能介绍_PHP教程
    1/1

    PHP中文网