/**
    * 得到树型结构
    * @param int ID,表示获得这个ID下的所有子级
    * @param string 生成树型结构的基本代码,例如:"<option value=\$id \$selected>\$spacer\$name</option>"
    * @param int 被选中的ID,比如在做树型下拉框的时候需要用到
    * @return string
    */
 function get_tree($myid, $str, $sid = 0, $adds = '')
    {
        $number=1;
        $child = $this->get_child($myid);
        if(is_array($child))
        {
            $total = count($child);
            foreach($child as $id=>$a)
            {
                $j=$k='';
                if($number==$total)
                {
                    $j .= $this->icon[2];
                }
                else
                {
                    $j .= $this->icon[1];
                    $k = $adds ? $this->icon[0] : '';
                }
                $spacer = $adds ? $adds.$j : '';
                $selected = $id==$sid ? 'selected' : '';
                @extract($a);
                eval("\$nstr = \"$str\";");
                $this->ret .= $nstr;
                $this->get_tree($id, $str, $sid, $adds.$k.'&nbsp;');
                $number++;
            }
        }
        return $this->ret;
    }
能否将这个程序每行意思都解释下!!谢谢了...这是原一个程序员写的树型结构代码 ... 中间意思一直不明白!

解决方案 »

  1.   


    http://topic.csdn.net/u/20090320/16/9277ae43-cbe9-4e21-8460-a63af6e10b0b.html完整的代码在这里...
      

  2.   

    特别是这几句:$spacer = $adds ? $adds.$j : '';
    $selected = $id==$sid ? 'selected' : '';
    @extract($a);
    eval("\$nstr = \"$str\";");
    $this->ret .= $nstr;$adds.$k.'&nbsp;'
      

  3.   

    function get_tree($myid, $str, $sid = 0, $adds = '')
        {
            $number=1;
            $child = $this->get_child($myid);  // 获取子结点
            if(is_array($child))  // exists
            {
                $total = count($child); //计数有多少 子结点
                foreach($child as $id=>$a)  
                {
                    $j=$k='';
                    if($number==$total)   //只有一个结点
                    {
                        $j .= $this->icon[2];
                    }
                    else
                    {
                        $j .= $this->icon[1];
                        $k = $adds ? $this->icon[0] : ''; //给的东西不全啊, 如果存在 $adds 的话, 就把 this->icon[0] 付值给 $k,否则 $k 还为 空
                    }
                    $spacer = $adds ? $adds.$j : '';   // 这个和 上面差不多 
                    $selected = $id==$sid ? 'selected' : '';  // 如果  $id == $sid 就 selected ,否则不 不选中 
                    @extract($a);  //这个就不太清楚 了, 是把 $a 当数组, 循环 加 进数据, 然后 也没看到用  ..
                    eval("\$nstr = \"$str\";");  // 把 $str 里面的 对就变量 替换掉 然后 符值给 $nstr
                    $this->ret .= $nstr;   
                    $this->get_tree($id, $str, $sid, $adds.$k.'&nbsp;');  //再调用 获取结点
                    $number++;
                }
            }
            return $this->ret;
        }
      

  4.   

    谢谢
    http://topic.csdn.net/u/20090320/16/9277ae43-cbe9-4e21-8460-a63af6e10b0b.html 这个里面的代码比较全