/**
* 得到树型结构
* @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.' ');
$number++;
}
}
return $this->ret;
}
能否将这个程序每行意思都解释下!!谢谢了...这是原一个程序员写的树型结构代码 ... 中间意思一直不明白!
http://topic.csdn.net/u/20090320/16/9277ae43-cbe9-4e21-8460-a63af6e10b0b.html完整的代码在这里...
$selected = $id==$sid ? 'selected' : '';
@extract($a);
eval("\$nstr = \"$str\";");
$this->ret .= $nstr;$adds.$k.' '
{
$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.' '); //再调用 获取结点
$number++;
}
}
return $this->ret;
}
http://topic.csdn.net/u/20090320/16/9277ae43-cbe9-4e21-8460-a63af6e10b0b.html 这个里面的代码比较全