国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

ComboTree中的會計科目樹形菜單實現方法

2024-05-04 21:50:42
字體:
來源:轉載
供稿:網友

假設數據庫中會計科目數據表的字段為:id,code,name,islast。分別為自增主鍵,科目編碼,科目名稱,是否為末級("1"表示末級科目)。

這里在Thinkphp的模型層中使用遞歸來構建ComboTree所需的數據,代碼及注解如下:

  1. namespace Home/Model; 
  2. use Think/Model; 
  3.   
  4. class AccountModel extends Model{ 
  5.   
  6.   publicfunctiongetTreeList(){  
  7.   $data = $this->field('id,code,name,islast')->select(); 
  8.   foreach($data as &$v){       //這里加入了元素pid,用來標識父級id的    
  9.    $len = strlen($v['code']); 
  10.    if($len == 3){          //這里假設長度為3位的科目編碼是一級,5位為二級科目,7位為三級,以此類推 
  11.     $v['pid'] = 0; 
  12.    }else
  13.     $v['pid'] = substr($v['code'],0,$len-2); 
  14.    }  
  15.   } 
  16.   return$this->createTree($data);//生成ComboTree所需的數據結構 
  17.  } 
  18.    
  19.  //遞歸的方式生成子樹 
  20.  privatefunctioncreateSubTree($data,$pid){ 
  21.   $tree = array(); 
  22.   foreach($data as $k=>$v){ 
  23.    if($v['pid'] == $pid){ 
  24.     $newDate = array
  25.      'id'=> $v['id'], 
  26.      'text'=>$v['name'], 
  27.      'state'=>($v['islast'] != 1)?'closed':'open' 
  28.     ); 
  29.     if($v['islast'] != 1){        //如果不是末級科目調用自身生成子數據 
  30.      $subData = $this->createSubTree($data,$v['code']); 
  31.      if(!emptyempty($subData)){ 
  32.       $newDate['children'] = $subData;  
  33.      } 
  34.     } 
  35.     array_push($tree,$newDate); 
  36.    }   
  37.   } 
  38.   return$tree
  39.  } 
  40.    
  41.  //生成樹,先從一級會計科目分類開始創建樹形菜單數據 
  42.  privatefunctioncreateTree($data){  
  43.   $ret = array(); 
  44.   foreach($data as $k => $v){ 
  45.    if($v['pid'] == 0){ 
  46.     $newDate = array//創建為ComboTree能夠識別的格式,這里我沒有更好的辦法了,只能這樣處理 
  47.      'id'=> $v['id'], 
  48.      'text'=>$v['name'], 
  49.      'state'=>'closed' 
  50.     ); 
  51.     $subData = $this->createSubTree($data,$v['code']); 
  52.     if(!emptyempty($subData)){ 
  53.      $newDate['children'] = $subData;  
  54.     } //Vevb.com 
  55.     $ret[] = $newDate
  56.    }    
  57.   } 
  58.   return$ret
  59.  }  

類似上述的數據(如部門,地區等)需要構建樹形菜單的簡單修改代碼后基本都能實現類似功能。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昆山市| 白朗县| 政和县| 齐齐哈尔市| 滁州市| 阜新市| 安泽县| 合山市| 赣州市| 惠东县| 萨嘎县| 呈贡县| 土默特右旗| 唐海县| 文山县| 错那县| 定西市| 和平县| 措勤县| 铜陵市| 辽阳县| 韶山市| 都安| 通江县| 垣曲县| 屏东县| 盐津县| 库尔勒市| 商城县| 正镶白旗| 达州市| 时尚| 礼泉县| 鄄城县| 虎林市| 龙游县| 大连市| 上蔡县| 宁海县| 宜君县| 绥中县|