安静,专注

培训时老师的无级分类的类

上一篇 / 下一篇  2007-03-07 14:40:08 / 个人分类:PHP

以前听的不怎么明白,今天又看了一下,//R 为我的注释;

<?
class Char_class {
/**
 +------------------------------------------------------------------------------------------------
 |   功能说明: 根据类表生成树型图.
 |   调用部分 :
 |   ========================================
 |   $test_array = get_page_children($node_cache,0, $node_cache,0);
 |
 |    echo "\n<select name=select>\n";
 |
 |    $last = "├─";
 |    foreach($test_array as $key=>$val)
 |   {
 |     $item = str_repeat(" │ ",$val['depth']);
 |     echo "<option value=".$val['id'].">".$item.$last.$val['name']."</option>\n";
 |     $item = '';
 |    }
 +-------------------------------------------------------------------------------------------------
 */
    //R 加载数组;
 function  node_cache($inputnode){
  global $node_cache;
  if (!is_array($node_cache) || empty($node_cache)){
   $this->node_cache = $inputnode;
  }
 }
   //R 数组按树生成中序排列;
 function &get_page_children($id, $node,$depth=0)//&  //R 返回引用
 {
  global $node_cache;
  if ( empty($node) )
  {
   $node = &$node_cache;  //&
  }
  $depth++; //R 每递归一层深度+1;
  $tree_list = array();//R 每次初始化数组;
  if (is_array($node_cache)){
   foreach ($node as $leap )
   {
    if ($leap['parentid'] == $id)
    {
     $leap['depth'] = $depth - 1;//R 去除自加的效果,当前子结点属于当前深度;
     $tree_list[] = $leap;
     if ( $children = $this->get_page_children($leap['id'], $node,$depth))
     {//R $children并非引用赋值,而是拷贝,为递归服务;
      $tree_list = array_merge($tree_list, $children);
      //R $children是一个二维数组;
     }
    }
   }
  }

  return $tree_list;//R 返回结点的所有子树;
 }

 /**
 +----------------------------------------------------------------------------------------------------
 |   功能说明: 利用根据类表生成树型图的函数,生成一个下拉列表.
 +----------------------------------------------------------------------------------------------------
 */

 function get_page_select($Selectname,$Id,$Ex)
 {
  global $node_cache;
  $Array = $this->get_page_children(0, $node_cache,0);
  $Table = "";
  $Table .=" <select name='".$Selectname."' ".$Ex.">\n";
  $Table .=" <option value=0>├─Root</option>\n";

  $last = "├─";
  foreach($Array as $key=>$val)
  {
   $item = str_repeat(" │ ",$val['depth']);
   $Table .= "<option value='".$val['id']."'";
   if (intval($Id)==intval($val['id'])){
    $Table .= " selected ";
   }
   $Table .= ">".$item.$last.$val['subject']."</option>\n";
   $item = '';
  }
  return $Table;
 }
}
?>


TAG: PHP

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar