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

复制代码 代码如下:

<?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>"; } ?>

相关推荐