使用PHP數(shù)組實(shí)現(xiàn)無(wú)限分類(lèi),不使用數(shù)據(jù)庫(kù),不使用遞歸.
更新時(shí)間:2006年12月09日 00:00:00 作者:
復(fù)制代碼 代碼如下:
<?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("請(qǐng)?zhí)砑臃诸?lèi)名字")</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">根分類(lèi)</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>";
}
?>
您可能感興趣的文章:
相關(guān)文章
PHPTree——php快速生成無(wú)限級(jí)分類(lèi)
在開(kāi)發(fā)中經(jīng)常需要用到樹(shù)形數(shù)據(jù),比如無(wú)限多級(jí)分類(lèi),就是典型的樹(shù)形結(jié)構(gòu)。這里面的算法,用到了遞歸思想,為了簡(jiǎn)化開(kāi)發(fā)過(guò)程,我編寫(xiě)了一個(gè)工具來(lái)提升開(kāi)發(fā)效率,需要的朋友可以參考下2018-03-03PHP中使用mktime獲取時(shí)間戳的一個(gè)黑色幽默分析
mktime(hour,minute,second,month,day,year,is_dst)這是mktime的語(yǔ)法說(shuō)明,一目了然應(yīng)該不難寫(xiě)出一個(gè)時(shí)間戳的代碼來(lái)2012-05-05php注冊(cè)系統(tǒng)和使用Xajax即時(shí)驗(yàn)證用戶(hù)名是否被占用
這篇文章主要為大家詳細(xì)介紹了php注冊(cè)系統(tǒng)和使用Xajax即時(shí)驗(yàn)證用戶(hù)名是否被占用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08php $_SESSION會(huì)員登錄實(shí)例分享
這篇文章主要為大家詳細(xì)介紹了php $_SESSION會(huì)員登錄實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-03php實(shí)現(xiàn)word轉(zhuǎn)html的方法
這篇文章主要介紹了php實(shí)現(xiàn)word轉(zhuǎn)html的方法,涉及PHP調(diào)用com組件操作word文檔的相關(guān)技巧,需要的朋友可以參考下2016-01-01