ʹÓÃ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>";

¡¡¡¡}

¡¡¡¡?>