ホームページ >バックエンド開発 >PHPチュートリアル >PHP Infinitus 分類設計モデル コードの概要
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 フィールドは並べ替えの役割を果たすことができません。