今回は、無限分類を実現するための CMSPRESS について説明します (コード付き)。CMSPRESS が無限分類を実装するための 注意事項 は何ですか? ここで実際のケースを見てみましょう。
超無限分類 使いやすく、非常に効率的なコアコードは 10 行未満です さらに、この分類の欠点と、より効率的でシンプルな無限分類方法を見つけたいです^_^
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[] Save 並べ替えの結果は、基本的に、並べ替えて保存した後、使用されなくなったので unset($data[$key]) できます
&$data を使用します。 unset($data[$key]); と組み合わせたアドレスによるパラメーターの受け渡しにより、ループの数が減り、効率が数倍向上します
ソート前後のデータ構造は次のとおりです
tableソート前のデータ構造
id pid
1 0
2 0
3 1
4 3
ソート後のデータ構造
id pid count1 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>テンプレートで使用します 3da5ee660f26a047cce0b9503e43e613 通常の出力で必要なものを生成できます ツリー構造のフィールドは上記のように変更されます テスト後、項目が 3,000 個ある場合、0.5 秒かかります1,000個の場合は約0.02秒かかりますが、3,000個を超えると効率が大幅に低下します。これ以上の詳細なテストはまだ行われていません。この記事の事例を読んだ後は、PHP 中国語 Web サイトの他の関連記事にも注目してください。 推奨読書:
thinkPHPフレームワークの自動入力原理と使用法の詳細な説明
以上がCMSPRESSは無制限の分類を実現(コードあり)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。