Heim > Artikel > Backend-Entwicklung > CMSPRESS realisiert unbegrenzte Klassifizierung (mit Code)
Dieses Mal bringe ich Ihnen CMSPRESS, um eine unendliche Klassifizierung zu erreichen (mit Code). Was sind die Vorsichtsmaßnahmen für CMSPRESS, um eine unendliche Klassifizierung zu implementieren?
SuperUnendliche Klassifizierung Einfach und effizient zu verwenden, der Kerncode umfasst weniger als 10 Zeilen
Außerdem möchte ich die Mängel dieser Klassifizierung herausfinden und sie effizienter gestalten und einfache unendliche Klassifizierungsmethode^_^
Der Kerncode lautet wie folgt
class Tool { static public $treeList = array(); //存放无限分类结果如果一页面有多个无限分类可以使用 Tool::$treeList = array(); 清空 /** * 无限级分类 * @access public * @param Array $data //数据库里获取的结果集 * @param Int $pid * @param Int $count //第几级分类 * @return Array $treeList */ static public function tree(&$data,$pid = 0,$count = 1) { foreach ($data as $key => $value){ if($value['Pid']==$pid){ $value['Count'] = $count; self::$treeList []=$value; unset($data[$key]); self::tree($data,$value['Id'],$count+1); } } return self::$treeList ; } }
$treeList[] Das Speichern des Sortierergebnisses besteht im Wesentlichen darin, es einmal zu sortieren und zu speichern und es dann zu löschen($data[ $key]); weil es nicht mehr verwendet werden kann
&$data verwendet die Parameterübergabe nach Adresse, kombiniert mit unset($data[$key]); um die Anzahl der Schleifen zu reduzieren, was die Effizienz um ein Vielfaches verbessert,
aber die Pid muss nach ASC sortiert werden, sonst ist die Anzeige unvollständig.
$value['Count'] = $count; generiert nach Ebene in der Vorlage
Die Datenstruktur vor und nach der Sortierung ist wie folgt
Felder Id und Pid, die von der Tabelle benötigt werden
Datenstruktur vor der Sortierung
id pid
1 0
2 0
3 1
4 3
Sortierte Datenstruktur
id pid count
1 0 1
3 1 2
4 3 3
2 0 1
//默认列表 public function index() { $menu = M('Menu'); $list = $menu->order('Pid ASC,Morder DESC,Id ASC')->select(); $this->assign('List',Tool::tree($list)); $this->display(); }
<td style=" text-indent :<{$vo['Count']*20}>px;"><neq name="vo.Count" value="1">| -- </neq><{$vo.Name}></td>im Controller auf
und verwenden Sie die Vorlage
Testen Sie, ob es für 3000 Elemente 0,5 Sekunden dauert. Für 1000 Elemente dauert es etwa 0,02 Sekunden Wenn es 3000 übersteigt, wird es stark reduziert. Die Effizienz von etwa 2000 Elementen ist ohne detailliertere Tests immer noch relativ hoch.
Ich glaube, Sie haben es gemeistert, nachdem Sie den Fall in diesem Artikel gelesen haben. Bitte achten Sie darauf zu anderen verwandten Artikeln auf der chinesischen PHP-Website!
Empfohlene Lektüre:
Detaillierte Erläuterung der Verwendung von PHP Delayed Static Binding
Das obige ist der detaillierte Inhalt vonCMSPRESS realisiert unbegrenzte Klassifizierung (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!