この記事では主に再帰に基づいた PHP ツリー メニュー コードを紹介します。これは、ノードを走査してツリー メニューを構築するための非常に実用的なスキルです。
の例を参照してください。この記事では、再帰に基づいて実装された php ツリー メニュー コードについて説明します。皆さんの参考に共有してください。具体的な実装方法は以下の通りです。
ECサイトを開発する際、再帰的に実装したPHPのツリーメニュー機能を利用してツリーメニューを表示する機能を作りました。具体的なコードは次のとおりです。
コードは次のとおりです。
public function procCategory($sid,$pid){ $return = array(); $key = 0; static $arr = array(); //分类级别参考数组 $sql = "select cid,pcid,name from shop_goods_catalog where sid='{$sid}' and pcid = '{$pid}'"; $result = $this->db->query($sql); while($row=$this->db->fetchArray($result)){ $nbsp = ''; if($row['pcid']==0){ $arr = array(); } $arr[] = $row['pcid']; //顶级分类不添加树形结构标识。 if($row['pcid']>0){ //根据分类级别添加树形结构标识 $key = array_search($row['pcid'],$arr); for($i=0;$i<$key;$i++){ $nbsp .= ' '; } //重构分类级别参考数组 if(count($arr)>1&&count(array_keys($arr,$row['pcid']))>1){ $arr = array_slice($arr,0,$key+1); } } $row['name'] = $nbsp.$row['name']; $row['level'] = $key; //分类级别,0为顶级分类,1为二级分类,用于样式设定或其他需求 $return[] = $row; $r = $this->procCategory($sid,$row['cid']); $return = array_merge($return,$r); } return $return; }
再帰の効率が比較的低いため、プログラムの効率を重視する場合は、この方法を使用しないか、この方法を改善してください。
以下はphpツリー無限分類コードです。必要な友人はそれを参照できます。
りー以上がPHPツリーメニューのサンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。