一本书中有父目录和子目录两层目录,想按目录结构读取。
例如: 第一章标题是1 第一章第一节是1.1 第二节是1.2
想要用php制作一个下拉栏标题是章的名称,下拉栏的内容是小节名称应该怎么做。

解决方案 »

  1.   

    给定一个父目录(父节点)然后递归获取子目录(子节点) /*
    * @access public
    * @param $pid 节点的id
    * @param array 返回改节点的所有后代节点
    *
    */
    public function list_cate($pid=0){
    #获取所有记录
    $query = $this->db->get(self::TBL_CATE);
    $cates = $query->result_array();
    #对类别进行重组,并返回
    return $this->_tree($cates, $pid); } /*
    * @access private
    * @param $arr array  要遍历的数据
    * @param $pid 节点的pid,默认为0, 表示从顶级节点开始
    * @param array 排好序的所有后代节点
    */ private function _tree($arr, $pid=0,$level=0){
    static $tree = array(); #用于保存重组的结果,使用静态数组
    foreach($arr as $v){
    #code...
    if ($v['parent_id'] == $pid){
    //说明找到了以$pid为父节点的子节点,j将其保存
    $v['level'] = $level;
    $tree[] = $v;
    //然后以垓节点为父节点,继续找齐后代节点
    $this->_tree($arr, $v['cat_id'], $level+3);
    }
    } return $tree;
    }