Heim  >  Artikel  >  Backend-Entwicklung  >  So erstellen Sie eine unendliche Klassifizierungsbaumstruktur

So erstellen Sie eine unendliche Klassifizierungsbaumstruktur

巴扎黑
巴扎黑Original
2017-06-23 14:05:191094Durchsuche

Zuerst die Darstellungen

Die Klassifizierung der obersten Ebene ist eigentlich die Klassifizierung der ersten Ebene, und die Klassifizierung der zweiten Ebene wird auch als Unterkategorie der ersten Ebene bezeichnet Auf dieser Basis kann die Unterkategorie auch Unterkategorien haben und so eine unendliche Kategorie bilden.

Sehen wir uns den spezifischen Implementierungscode an:

1. Abfrage nach Feld im Controller und Abfrage der Kategorie „Alle“. Informationen (id: der ID-Wert der Kategorie, cate_name: der Name der Kategorie, pid: übergeordnete ID, sorts: Vorbereitung für die Anzeige der Titelreihenfolge, optional.)

1     public function cate_display()2     {3         $cate = D('Cate'); 
4         $field = array('id','cate_name','pid','sorts');5         $list = $cate->allCategory($field);6         $this->assign('list',$list);7         $this->display();8     }

2. Code im Modell

Erstellen Sie zwei Methoden im Modell, die dem Controller entsprechen

1. Fragen Sie alle Klassifizierungsinformationen ab und rufen Sie die Methode auf, um einen Klassifizierungsbaum zu generieren:

1 public function allCategory($field='*'){2         $data = $this->field($field)->select();3         return $this->tree($data);4     }

2. Generieren Sie einen Klassifizierungsbaum (verwenden Sie Rekursion, übergeben Sie Daten und zwei Variablen: pid [ID der übergeordneten Klasse], Ebene [Anzahl der Ebenen, wird zur Steuerung der Anzahl der Anzeigen verwendet], initial). Der Wert ist Null)

 1 public function tree($data,$pid=0,$level=0){ 2         static $tree = array(); 3         foreach($data as $k=>$v){ 4             if($v['pid'] == $pid){ 5                 $v['level'] = $level; 6                 $tree[]=$v; 7                 $this->tree($data,$v['id'],$level+1); 8             } 9         }10     11         return $tree;12     }

3. Der Code in der Ansichtsdatei

 1 <div class="form-group"> 2                 <label for="pid" class="col-sm-2 control-label no-padding-right">上级菜单</label> 3                 <div class="col-sm-6"> 4                     <select name="pid" style="width: 100%;"> 5                         <option selected="selected" value="0">顶级菜单</option> 6                         <volist name="row" id="val">  
 7                             <option value="{$val.id}"><?php echo str_repeat(&#39;-&#39;,$val[&#39;level&#39;]*4); ?>{$val.cate_name} 8                             </option>  
 9                         </volist>  
10                     </select>11                 </div>12             </div>

In Auf diese Weise wird eine Klassifizierungsbaumstruktur vervollständigt, die unendlich rekursiv sein kann. Die Kernidee ist immer noch die rekursive Funktion im Modell. Die zuerst übergebene PID ist standardmäßig Null Die übergeordnete Ebene wird zum Aufzeichnen der rekursiven Ebenennummer verwendet. Wenn die Ansichtsseite angezeigt wird, wird die in PHP integrierte Funktion str_repeat () aufgerufen, um bei der Ausgabe wiederholt „-“ auszugeben .

Das obige ist der detaillierte Inhalt vonSo erstellen Sie eine unendliche Klassifizierungsbaumstruktur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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