無限級分類之查找子孫樹
阿新 • • 發佈:2017-05-28
return inux ati code arr == merge ade find
1 <?php 2 header("Content-Type:text/html;charset=utf-8"); 3 $cate=array( 4 array(‘id‘=>1,‘name‘=>‘html‘,‘parent‘=>0), 5 array(‘id‘=>2,‘name‘=>‘javascript‘,‘parent‘=>0), 6 array(‘id‘=>3,‘name‘=>‘div+css‘,‘parent‘=>0), 7 array(‘id‘=>4,‘name‘=>‘linux‘,‘parent‘=>0), 8array(‘id‘=>5,‘name‘=>‘mysql‘,‘parent‘=>0), 9 array(‘id‘=>6,‘name‘=>‘其他‘,‘parent‘=>0), 10 array(‘id‘=>7,‘name‘=>‘php‘,‘parent‘=>0), 11 array(‘id‘=>8,‘name‘=>‘字符串‘,‘parent‘=>7), 12 array(‘id‘=>9,‘name‘=>‘數組‘,‘parent‘=>7), 13 array(‘id‘=>10,‘name‘=>‘對象‘,‘parent‘=>7), 14array(‘id‘=>11,‘name‘=>‘jquery‘,‘parent‘=>2), 15 array(‘id‘=>12,‘name‘=>‘ajax‘,‘parent‘=>2), 16 array(‘id‘=>13,‘name‘=>‘存儲引擎‘,‘parent‘=>5), 17 array(‘id‘=>14,‘name‘=>‘事務‘,‘parent‘=>5), 18 array(‘id‘=>15,‘name‘=>‘存儲過程‘,‘parent‘=>5), 19array(‘id‘=>16,‘name‘=>‘視圖‘,‘parent‘=>5), 20 array(‘id‘=>17,‘name‘=>‘基本命令‘,‘parent‘=>4), 21 array(‘id‘=>18,‘name‘=>‘網絡配置‘,‘parent‘=>4) 22 ); 23 24 /* 25 * 利用靜態變量來做 26 * static $con 27 */ 28 29 function findson($arr,$id=0,$lev=1){ 30 static $con=array(); 31 foreach ($arr as $v){ 32 if ($v[‘parent‘]==$id){ 33 $v[‘lev‘]=$lev; 34 $con[]=$v; 35 findson($arr,$v[‘id‘],$lev+1); 36 } 37 } 38 return $con; 39 } 40 41 $arr=findson($cate,0,1); 42 43 44 foreach ($arr as $v){ 45 if($v[‘lev‘]>1){ 46 echo str_repeat(" ", $v[‘lev‘]).$v[‘name‘]."<br/>"; 47 }else{ 48 echo $v[‘name‘]."<br/>"; 49 } 50 51 } 52 53 54 /* 55 * 不用靜態變量 56 */ 57 58 function findson($arr,$id=0,$lev=1){ 59 $con=array(); 60 foreach ($arr as $v){ 61 if ($v[‘parent‘]==$id){ 62 $v[‘lev‘]=$lev; 63 $con[]=$v; 64 $con=array_merge($con,findson($arr,$v[‘id‘],$lev+1)); 65 } 66 } 67 return $con; 68 } 69 70 $arr=findson($cate,0,1); 71 72 73 foreach ($arr as $v){ 74 if($v[‘lev‘]>1){ 75 echo str_repeat(" ", $v[‘lev‘]).$v[‘name‘]."<br/>"; 76 }else{ 77 echo $v[‘name‘]."<br/>"; 78 } 79 80 } 97 ?>
無限級分類之查找子孫樹