Implementieren Sie eine unbegrenzte Klassifizierung in PHP

不言
Freigeben: 2023-03-25 06:04:02
Original
1382 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit der praktischen unendlichen Klassifizierung in PHP. Jetzt kann ich ihn mit Ihnen teilen.

In unserer Arbeit gibt es unendliche Klassifizierungen Tatsächlich ist die Idee nicht schwierig. Es geht nur darum, rekursives Denken zu verwenden. Werfen wir einen Blick auf die unendliche Klassifizierungsfunktion, die ich geschrieben habe:

header("content-type:text/html;charset=utf-8");//测试数组
$arr=array(    
array('id'=>2,'name'=>'分类2','parent_id'=>1),    
array('id'=>9,'name'=>'分类9','parent_id'=>8),    
array('id'=>1,'name'=>'分类1','parent_id'=>0),    
array('id'=>7,'name'=>'分类7','parent_id'=>0),    
array('id'=>3,'name'=>'分类3','parent_id'=>2),    
array('id'=>4,'name'=>'分类4','parent_id'=>0),    
array('id'=>6,'name'=>'分类6','parent_id'=>5),    
array('id'=>8,'name'=>'分类8','parent_id'=>7),    
array('id'=>5,'name'=>'分类5','parent_id'=>4)
);/**

 * 已知子类id 得到父类树形结构
 * @param  [type]  $data    [要查询的数组]
 * @param  [type]  $id      [子类id]
 * @param  integer $level   [缩进系数]
 * @param  boolean $isClear [调用时为true,多次调用不相互叠加]
 * @return [type]           [返回结果树形结构]
 */function getParent($data,$id,$level=0,$is_Clear=false){

    static $_rec = array();    if ($is_Clear == true) {        $_rec = array();
    }    foreach ($data as $k=>$v) {        if ( $v['id'] == $id) {        $_rec[] =$v;  
                // if ($v['parent_id'] != 0) {
                getParent($data,$v['parent_id']);         // }
        }
    }     $rec = array_reverse($_rec);     for ($i=0; $i
     $rec[$i]['level']=$level;     $level++;
     }     //把自己拿出来,自己不属于父类
     array_pop($rec);     return $rec;
}/**
 * 已知父类id找  得到子类树形结构
 * @param  [type]  $data    [要查询的数组]
 * @param  [type]  $id      [父类id]
 * @param  integer $level   [缩进系数]
 * @param  boolean $isClear [调用时为true,多次调用不相互叠加]
 * @return [type]           [返回结果树形结构]
 */function getChilds($data,$id,$level=0,$isClear=false){
    static $rec = [];    if ($isClear == true) {        $rec =[];
    }    foreach ($data as $k => $v) {        if ($v['parent_id'] == $id) {            $v['level']=$level;            $rec[] =$v;
            getChilds($data,$v['id'],++$level);
        }
    }    return $rec;

}/**
 * 已知父类id,得到子类id树形结构;区别在于$row[]=$v['id'],只赋值id;
 * getParent(),可改写成getParentid();
 * @param  [type]  $data [description]
 * @param  [type]  $id   [description]
 * @param  boolean $col  [description]
 * @return [type]        [description]
 */

   function getChildsId($data,$id,$col=false){
       static $row=array();       if($col)           $row=array();           foreach ($data as $k => $v) {               if($v['parent_id'] ==$id){                   $row[]=$v['id'];
                   getChildsId($data,$v['id']);
               }
           }       return $row;
   }/**
 * 已知父类id,得到树形结构;
 * 结合getParent(),若不弹出自己,即已知子类id,得到树形结构
 * @param  [type]  $data      [description]
 * @param  [type]  $parent_id [description]
 * @param  integer $level     [description]
 * @param  boolean $col       [description]
 * @return [type]             [description]
 */function tree($data,$parent_id,$level=0,$col=false){
    static $res=array();        if($col) $res=array();    foreach ($data as $k => $v) {        
    if($v['parent_id'] == $parent_id){      
          $v['level']=$level;            
          $res[]=$v;
            tree($data,$v['id'],$level+1);
        }
    }     return $res;
}
Nach dem Login kopieren

Ich hoffe, dass jeder wertvolle Kommentare hinterlässt, um meinen Blog zu verbessern und zu bereichern. Willkommen zum Austausch und Lernen.

Verwandte Empfehlungen:

PHP Infinitus-Klassifizierung

So erstellen Sie eine Infinitus-Klassifizierungsbaumstruktur

php implementiert einen unendlichen Klassifizierungsbaum ohne Rekursion

Das obige ist der detaillierte Inhalt vonImplementieren Sie eine unbegrenzte Klassifizierung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage