Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erläuterung der PHP-Infinitus-Klassifizierungsbeispiele

Detaillierte Erläuterung der PHP-Infinitus-Klassifizierungsbeispiele

小云云
Freigeben: 2023-03-22 21:38:01
Original
1875 Leute haben es durchsucht

In unserer Arbeit gibt es viele Anwendungen der unendlichen Klassifizierung. Tatsächlich ist die Idee nicht schwierig. Es geht nur darum, sich selbst aufzurufen. 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

Verwandte Empfehlungen:

Detaillierte Erläuterung der PHP-Infinitus-Klassifizierung

So erstellen Sie eine Infinitus-Klassifizierungsbaumstruktur

PHP realisiert unbegrenzte Menüs Extreme Klassifizierung

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der PHP-Infinitus-Klassifizierungsbeispiele. 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