ホームページ  >  記事  >  php教程  >  PHP 配列を使用すると、データベースや再帰を必要とせずに無制限の分類を実現できます。

PHP 配列を使用すると、データベースや再帰を必要とせずに無制限の分類を実現できます。

WBOY
WBOYオリジナル
2016-06-13 12:35:07812ブラウズ

コードをコピー コードは次のとおりです:



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["ソートレベル"];
}
}
$max_fast_level = max($fast_level);
unset($fast_level);
$sub = ceil($max_fast_level) 1;
switch(strlen($sub))
{
case 1:
return "00{$sub }";
休憩;
ケース 2:
return "0{$sub}";
休憩;
ケース 3:
$sub を返す;
休憩;

}
else
{
return "001";
}
}

foreach($this->data as $val)
{
if(eregi("^".$fatherlevel.".{ 3}$",$val["sortlevel"]))
{
$level[] = $val["sortlevel"];

if(is_ar)レイ($レベル) )
{
$max_two_level = max($level);
$sub = ceil($max_two_level,-3)) 1;
switch($サブ))
{
case 1:
return substr($max_two_level,0,strlen($max_two_level)-1).$sub;
break;ケース 2:
return substr($max_two_level, 0,strlen($max_two_level)-2).$sub;
break;
case 3:
return substr($max_two_level,0,strlenレベル)-3).$sub break;

else
{
return $fatherlevel."001"; 🎜> }
}

パブリック 関数 オーダー()
{
$op = $this->data;
$this->array_usort($op,"sortlevel",SORT_ASC);
$op を返す;
}

public function add_cat($sortname,$sortlevel)
{
$data = time();
$arr = array
(
"{$data}" => array
(
"sortname" => $sort名前、
「ソートレベル」 => $ 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--;
休憩;

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

if($_GET["action"] == "tpl")
{
echo '

';"rn";
echo 'rn";
echo ' '."rn";
echo '';
echo "
";
終了します。
}

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。