thinkphp的list_to_tree 实现无限级分类列出所有节点		list_to_tree 使用起来十分方便,详细可查看手册。因为我在用的时候需要同时列出所有节点,所以写了一个递归函数,拿出来供大家参考。
public function index(){    load('extend');            //加载扩展方法    $category=d('category');    $list=$category->order('sort desc')->select();//实现同级节点排序    $list=list_to_tree($list,'id','fid'); //详细参数见手册    $list=$this->findchild($list);        dump($list);}protected  function findchild($arr){        static $tree=array();        foreach ($arr as $key=>$val){                $tree[]=$val;                if (isset($val['_child'])){                    $this->findchild($val['_child']);                }                    }    return $tree;}
/** * 把返回的数据集转换成tree * @access public * @param array $list 要转换的数据集 * @param string $pid parent标记字段 * @param string $level level标记字段 * @return array */function list_to_tree($list, $pk='id',$pid = 'pid',$child = '_child',$root=0) {    // 创建tree    $tree = array();    if(is_array($list)) {        // 创建基于主键的数组引用        $refer = array();        foreach ($list as $key => $data) {            $refer[$data[$pk]] =& $list[$key];        }        foreach ($list as $key => $data) {            // 判断是否存在parent            $parentid = $data[$pid];            if ($root == $parentid) {                $tree[] =& $list[$key];            }else{                if (isset($refer[$parentid])) {                    $parent =& $refer[$parentid];                    $parent[$child][] =& $list[$key];                }            }        }    }    return $tree;}/** * 对查询结果集进行排序 * @access public * @param array $list 查询结果 * @param string $field 排序的字段名 * @param array $sortby 排序类型 * asc正向排序 desc逆向排序 nat自然排序 * @return array */function list_sort_by($list,$field, $sortby='asc') {   if(is_array($list)){       $refer = $resultset = array();       foreach ($list as $i => $data)           $refer[$i] = &$data[$field];       switch ($sortby) {           case 'asc': // 正向排序                asort($refer);                break;           case 'desc':// 逆向排序                arsort($refer);                break;           case 'nat': // 自然排序                natcasesort($refer);                break;       }       foreach ( $refer as $key=> $val)           $resultset[] = &$list[$key];       return $resultset;   }   return false;}/** * 在数据列表中搜索 * @access public * @param array $list 数据列表 * @param mixed $condition 查询条件 * 支持 array('name'=>$value) 或者 name=$value * @return array */function list_search($list,$condition) {    if(is_string($condition))        parse_str($condition,$condition);    // 返回的结果集合    $resultset = array();    foreach ($list as $key=>$data){        $find   =   false;        foreach ($condition as $field=>$value){            if(isset($data[$field])) {                if(0 === strpos($value,'/')) {                    $find   =   preg_match($value,$data[$field]);                }elseif($data[$field]==$value){                    $find = true;                }            }        }        if($find)            $resultset[]     =   &$list[$key];    }    return $resultset;}
http://www.bkjia.com/phpjc/847865.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/847865.htmltecharticlethinkphp的list_to_tree 实现无限级分类列出所有节点 list_to_tree 使用起来十分方便,详细可查看手册。因为我在用的时候需要同时列出所有节点...
   
 
   