兩種思路吧,遞迴 和 非遞迴
遞迴$arr = [
1=>[『id『=>1,『pid『=>0],
2=>[『id『=>2,『pid『=>0],
3=>[『id『=>3,『pid『=>1],
4=>[『id『=>4,『pid『=>1],
5=>[『id『=>5,『pid『=>0],
6=>[『id『=>6,『pid『=>3],
7=>[『id『=>7,『pid『=>6],
8=>[『id『=>8,『pid『=>3],
9=>[『id『=>9,『pid『=>4],
10=>[『id『=>10,『pid『=>7],
11=>[『id『=>11,『pid『=>7],
//排序陣列arr 層數level 鍵val
function display_test($arr,$level,$val)else set right_value = right_value+2 where right_value>=:right_value";
//修改左值
$sql = "update set left_value = left_value+2 where left_value>=:left_value";
//插入
$sql = "insert into (name,description,left_value,right_value,create_time) values(:name,:description,:left_value,:right_value,:create_time)";
刪除節點: 用事物
//刪除
$sql = "delete from where left_value>=:left_value and right_value<=:right_value";
//修改左值
$sql = "update set left_value=left_value- where left_value>:left_value";
//修改右值
$sql = "update set right_value=right_value- where right_value>:right_value";
獲取所有節點,包含縮排
public function display_tree($id){
//獲取節點
$model = $this->model->getbyid($id);
if(!$model)
return false;
$left = $model[『left_value『];
$right = $model[『right_value『];
//獲取子節點 按left_value排序
$res = $this->getbyleftright($left,$right);
$temp = ;
//迴圈找出節點所在級數
foreach ($res as $k=>$v)
if(count($temp)>0)
// 檢查我們是否應該將節點移出堆疊
while ($temp[count($temp) - 1] < $v[『right_value『]) {
array_pop($temp);
//echo str_repeat("*",count($temp)).$v[『name『]."\n";
$res[$k][『level『] = count($temp);
$temp = $v[『right_value『];
//level 第幾層
return $res;
mysql的無限分類問題 MySQL無限分類
無限分類 不管什麼分類就放在分類表中 create table loop category id int primary key auto increment,name varchar 20 pid int insert into loop category name,pid values 手機 n...
mysql部門分類 mysql部類參照 mysql
mysql資料庫內容總結 數字型別 tinyint m unsigned zerofull 1個位元組 預設的是有符號的 128 127 unsigned 無符號整數 範圍0 255 m 代表寬度 在zerofull時才有意義 只是乙個顯示效果,不會影響到實際的資料長度 zerofull 零填充 如...
mysql無限級分類表設計
create table tdb goods types type id smallint unsigned primary key auto increment,type name varchar 20 not null,parent id smallint unsigned not null d...