>  기사  >  백엔드 개발  >  PHP 배열을 사용하여 무제한 분류, 데이터베이스 없음, 재귀 없음 달성

PHP 배열을 사용하여 무제한 분류, 데이터베이스 없음, 재귀 없음 달성

WBOY
WBOY원래의
2016-07-29 08:35:38992검색

코드 복사 코드는 다음과 같습니다.


class cat
{
    public $data;
    공용 함수 __construct() 
    {
        @include "data.php";
        $this->data = $class;
    }
    공용 함수 CreateSortLevel($fatherlevel)
    {
        if(empty($fatherlevel))
        {
           if(is_array($this->data))
            {
               $fast_level = array();
               foreach($this->data를 $value로)
               {
                 if(strlen($value["sortlevel"]) == 3)          {
                       $fast_level[] = $value["정렬수준"];
                   }
               }
              $max_fast_level = max($fast_level);
                unset($fast_level);
               $sub   = ceil($max_fast_level)   1;
               스위치(strlen($sub))
               {
                 사례 1:
                      return "00{$sub }";
                       휴식;
                   사례 2:
                      '0{$sub}' 반환;
                       휴식;
                   사례 3:
                      $sub 반환;
                       휴식;
               }
            }
            그렇지 않으면
           {
               '001'을 반환합니다.
            }
        }
        foreach($this->data as $val)
        {
           if(eregi("^".$fatherlevel.".{3}$",$val["sortlevel"]))
           {
               $level[] = $val["sortlevel"];
           }
   
        if(is_ar 레이($레벨) )
        {
            $max_two_level = max($level); ))
{
               사례 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;
              사례 3:
                return substr($max_two_level,0,strlen($max_two _level)-3).$sub                   break;
            }
        else
        {
            return $fatherlevel."001"; 🎜>        }
    }
    공개 기능 주문()
    {
        $op = $this->data
        $this->array_usort($op,"sortlevel",SORT_ASC);
        $op를 반환합니다.
    }
    공용 함수 add_cat($sortname,$sortlevel)
    {
        $data = time();
        $arr = 배열
        (
            "{$data}" => 배열
           (
             "sortname"  => $sortname, 🎜>              "정렬 수준" => this->CreateSortLevel($sortlevel)
            )
         );
        $rs = $this->data   $arr;
        $this->add_wirte($rs);
    }
    비공개 함수 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;"));
    }
    공용 함수 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);
    }
    공용 함수 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" => "'.$value["sortlevel"] .'"'."rn";
            $array .= '      ),';
        }
        $array  = substr($array,0,-1);
        $array .= " rn)rn?>";
        file_put_contents("data.php",$array);
    }
}
$cat = new cat();
if($_GET["action"] == "추가")
{
    if(strlen($_POST["sortname"]) < 2)
    {
        에코 ' alert("请添加分类name字")';
        에코 'location.href="/cat.php?action=tpl"';
        종료;
    }
    if(file_exists("data.php"))
    {
        $cat->add_cat($_POST["sortname"],$_POST["sortlevel"]);
        echo 'alert("添加成功")';
        에코 'location.href="/cat.php"';
        종료;
    }
    else
    {
        $cat->wirte($_POST["sortname"],$_POST["sortlevel"]);
        echo 'alert("添加成功")';
        에코 'location.href="/cat.php"';
        종료;
        종료;
    }
}
if($_GET["action"] == "tpl")
{
    echo '';"rn";
    에코 ''."rn";
    echo '根分类'."rn";
    foreach($cat->orders() as $val)
    {
        echo '';
        $clevel = strlen(substr($val['sortlevel'],0,-3));
        for($i = 0; $i < $clevel; $i )
        {
            에코 "-";
        }
        echo $val['sortname']."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"]; 🎜>}
?>


위에서는 컨텐츠 측면을 포함하여 데이터베이스나 재귀를 사용하지 않고 무한 분류를 달성하기 위해 PHP 배열을 사용하는 방법을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.