function familytree($arr, $id) { static $list = array(); foreach ($arr as $v) { if ($v['pid'] == $id) { familytree($arr, $v['pid']); $list[] = $v; } } return $list; }
function familytree($arr, $id){ static $tree = array(); foreach($arr as $v){ if($v['id'] == $id){ $tree[] = $v; //判断要不是找父目录 if($v['parent'] !=0){ familytree($arr ,$v['parent']); } } } return $tree; }
function familytree($arr, $id){ $tree = array(); foreach($arr as $v){ if($v['id'] == $id){ $tree[] = $v; //判断要不是找父目录 if($v['parent'] !=0){ $tree = array_merge($tree, familytree($arr ,$v['parent'])); //使用array_merge 替换静态变量 } } } return $tree; }
array('id'=>8,'name'=>'上地','parent'=>2) ); //使用迭代的方法实习查找家谱树 //迭代,效率比递归高 function familytree($arr, $id){ $tree = array(); while($id !== 0){ foreach($arr as $v){ if($v['id'] == $id){ $tree[] = $v; $id = $v['parent']; //echo '查找完成一次<br />'; break; //跳出foreach当前循环继续 } } } return $tree; } echo '<pre>'; print_r(familytree($area, 4)); echo '</pre>'; echo '<h3>程序运行完成!</h3>'; ?>