ホームページ >バックエンド開発 >PHPチュートリアル >PHP Infinitus 分類設計モデル コードの概要

PHP Infinitus 分類設計モデル コードの概要

WBOY
WBOYオリジナル
2016-06-20 13:03:221173ブラウズ

PHP Infinitus 分類はよく使用されます。単純な PHP Infinitus 分類コードは次のとおりです。

データテーブル構造

CREATE TABLE IF NOT EXISTS `category` (
  `id` int(5) NOT NULL AUTO_INCREMENT COMMENT '唯一自增id',
  `pid` int(5) NOT NULL DEFAULT '0' COMMENT '父id',
  `sort` int(2) NOT NULL DEFAULT '0' COMMENT '排序数字',
  `name` varchar(30) DEFAULT NULL COMMENT '名称',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COMMENT='无限极分类表' AUTO_INCREMENT=1 ;
データ

INSERT INTO `category` (`id`, `pid`, `sort`, `name`) VALUES
(1, 0, 1, 'php'),
(2, 0, 2, '数据库'),
(3, 0, 3, 'javascript'),
(4, 1, 1, '框架模板'),
(5, 1, 2, '函数总结'),
(6, 2, 1, 'mysql'),
(7, 4, 1, '框架'),
(8, 4, 2, '模板'),
(9, 8, 1, 'smarty'),
(10, 7, 2, 'thinkphp'),
(11, 10, 1, 'thinkphp技巧'),
(12, 10, 2, 'thinkphp模板'),
(13, 12, 3, '模板知识总结'),
(14, 12, 2, '模板视频教程'),
(15, 11, 1, 'model技巧');
関数実装コード

function tree(&$list,$pid=0,$level=0,$html='--'){
    static $tree=array();
    foreach($list as $v){
        if($v['pid']==$pid){
            $v['level']=$level;
            $v['html']=str_repeat($html,$level);
            $tree[]=$v;
            tree($list,$v['id'],$level+1,$html);
        } 
    }
    return $tree;
}
上記ツリー関数の最初のパラメータ $list は、上記の表に示すように、取得された 2 次元配列の結果セットです。データベースから結果セットを取得する SQL ステートメントには、order by sort asc を追加する必要があることに注意してください。追加しない場合、sort フィールドは並べ替えの役割を果たすことができません。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。