欢迎来到福编程网,本站提供各种互联网专业知识!

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

发布时间:2006-12-09 作者: 来源:转载
复制代码代码如下:";file_put_contents("data.php",$array);}publicfunctionadd_wirte($rs){$array="";file_put_contents("data.php",$array);}}$cat=newcat();if($_GET["action"]=="add"){if(strlen($_POST["sortname"])add_cat($_POST["sortn
复制代码 代码如下:

classcat
{
public$data;

publicfunction__construct()
{
@include"data.php";
$this->data=$class;
}


publicfunctionCreateSortLevel($fatherlevel)
{
if(empty($fatherlevel))
{
if(is_array($this->data))
{
$fast_level=array();
foreach($this->dataas$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))
{
case1:
return"00{$sub}";
break;
case2:
return"0{$sub}";
break;
case3:
return$sub;
break;
}
}
else
{
return"001";
}
}

foreach($this->dataas$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))
{
case1:
returnsubstr($max_two_level,0,strlen($max_two_level)-1).$sub;
break;
case2:
returnsubstr($max_two_level,0,strlen($max_two_level)-2).$sub;
break;
case3:
returnsubstr($max_two_level,0,strlen($max_two_level)-3).$sub;
break;
}
}
else
{
return$fatherlevel."001";
}
}

publicfunctionorders()
{
$op=$this->data;
$this->array_usort($op,"sortlevel",SORT_ASC);
return$op;
}

publicfunctionadd_cat($sortname,$sortlevel)
{
$data=time();
$arr=array
(
"{$data}"=>array
(
"sortname"=>$sortname,
"sortlevel"=>$this->CreateSortLevel($sortlevel)
)
);
$rs=$this->data+$arr;
$this->add_wirte($rs);
}

privatefunctionarray_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]'])";
}
elseif($args[$i]===SORT_DESC)
{
$order="-1*";
}
elseif(is_string($args[$i]))
{
$i--;
break;
}
}
$cmd.="if($num=$con)return$order$num;else";
if($order!='')
{
$i++;
}
}
@usort($array,@create_function('$a,$b',"$cmdreturn0;"));
}

publicfunctionwirte($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);
}

publicfunctionadd_wirte($rs)
{
$array="$array.='$class=array'."rn(rn";
foreach($rsas$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=newcat();
if($_GET["action"]=="add")
{
if(strlen($_POST["sortname"])<2)
{
echo'alert("请添加分类名字")';
echo'location.href="/cat.php?action=tpl"';
exit;
}
if(file_exists("data.php"))
{
$cat->add_cat($_POST["sortname"],$_POST["sortlevel"]);
echo'alert("添加成功")';
echo'location.href="/cat.php"';
exit;
}
else
{
$cat->wirte($_POST["sortname"],$_POST["sortlevel"]);
echo'alert("添加成功")';
echo'location.href="/cat.php"';
exit;
exit;
}
}

if($_GET["action"]=="tpl")
{
echo'';"rn";
echo'<selectname="sortlevel">'."rn";
echo'根分类'."rn";
foreach($cat->orders()as$val)
{
echo'';
$clevel=strlen(substr($val['sortlevel'],0,-3));
for($i=0;$i<$clevel;$i++)
{
echo"-";
}
echo$val['sortname']."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"

";
}
?>

相关推荐