1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | php代码如下: public function index(){ $data = array( array('id'=>'1','title'=>'一级栏目','pid'=>0), array('id'=>'2','title'=>'二级栏目','pid'=>1), array('id'=>'3','title'=>'三级栏目','pid'=>2), array('id'=>'4','title'=>'四级栏目','pid'=>3), array('id'=>'5','title'=>'一级菜单','pid'=>0), array('id'=>'6','title'=>'二级菜单','pid'=>5), array('id'=>'7','title'=>'三级菜单','pid'=>6), array('id'=>'8','title'=>'四级菜单','pid'=>7), array('id'=>'9','title'=>'一级导航','pid'=>0), array('id'=>'10','title'=>'二级导航','pid'=>9), array('id'=>'11','title'=>'三级导航','pid'=>10), array('id'=>'12','title'=>'四级导航','pid'=>11), ); //$treeData = $this->treeData($data); //print_r($treeData); $treeData = $this->optionsData($data); print_r($treeData); } //树形数组 protected function treeData($data,$pid = 0){ $result = array(); foreach($data as $v){ if($v['pid'] == $pid){ $v['children'] = $this->treeData($data,$v['id']); $result[] = $v; } } return $result; } //options递归信息 protected function optionsData($data,$pid = 0,$level=0,$delimit = ''){ $result = ''; foreach($data as $v){ if($v['pid'] == $pid){ if($level){ for($i=1;$i<=$level;$i++){ $delimit .= ' '; } } else { $delimit = ''; } $result .= '<option value="'.$v['id'].'">'.$delimit.$v['title'].'</option>'; $result .= $this->optionsData($data,$v['id'],$level+1); } } return $result; } //树形多维数组转换成一维数组 protected function treeOneData($data,$pid = 0,$level=0,$delimit = ''){ $result = array(); foreach($data as $v){ if($v['pid'] == $pid){ if($level){ for($i=1;$i<=$level;$i++){ $delimit .= ' '; } } else { $delimit = ''; } $result[] = '<option value="'.$v['id'].'">'.$delimit.$v['title'].'</option>'; $res = $this->optionsData($data,$v['id'],$level+1); if(is_array($res)){ foreach($res as $v2){ $result[] = $v2; } } } } return $result; } |