无限极分类,显而易见,需要使用Tree作为数据结构
最直观的设计是:
Class Node{
private $id;
private $cid;
//略去getter&setter
}
id:该节点的id
cid:该结点的child id
由于需要将该数据结构存入到关系型数据库,且每个节点的child节点数量是不定的,所以这种结构不可用
1.糟糕的设计
1.1
Class Node{
private $id;
private $pid;
//略去getter&setter
}
pid:该节点的parent id
在一棵树里,每个节点至多拥有一个parent节点。所以这种结构是可行的。
源码由http://www.yiichina.com/code/974提供。
测试代码为
$list = [];
$n = 1000;
//构造list
for($i=1;$i<n;$i++){
$rand = mt_rand(0, $i-1);
$list[] = ['id'=>$i,'pid'=>$rand];
}
$cat = new Category($list);
//输出
$time