无限分类-树形结构两种方式

//准备数组,代替从数据库中检索出的数据(共有三个必须字段id,name,pid) 
header("content-type:text/html;charset=utf-8"); 
categories = array( 
 array('id'=>1,'name'=>'电脑','pid'=>0), 
 array('id'=>2,'name'=>'手机','pid'=>0), 
 array('id'=>3,'name'=>'笔记本','pid'=>1), 
 array('id'=>4,'name'=>'台式机','pid'=>1), 
 array('id'=>5,'name'=>'智能机','pid'=>2), 
 array('id'=>6,'name'=>'功能机','pid'=>2), 
 array('id'=>7,'name'=>'超级本','pid'=>3), 
 array('id'=>8,'name'=>'游戏本','pid'=>3), 
); 

/*方法1 利用引用*/
/*第一步 先组建以id为key的数组*/tree = array();
foreach(categories asv){
  tree[v['id']] = v;tree[v['id']]['children'] = array();
}
/*第二部 利用引用,将children添加进去,这样只遍历一次即可*/
foreach(tree as key=>v){
  if(v['pid'] != 0){tree[v['pid']]['children'] = &tree[key];//注意:此处必须传引用否则结果不对
  }
}
/*第三部 删除无用的根节点*/
foreach(tree as key=>v){
  if(v['pid'] !=0 ){
    unset(tree[key]);
  }
}


/*方法2 利用递归*/
function get_attr(arr,pid){tree = array();
  foreach(arr askey=>v){
    if(v['pid'] == pid){v['children'] = get_attr(arr,v['id']);
      if(empty(v['children'])){
        unset(v['children']);//如果为空,则删除,可选
      }
      tree[] =v;
    }
  }
  return tree;
}tree2 = get_attr($categories, 0);

 

svn linux服务端创建仓库

【新建svn仓库】
先创建一个文件夹mkdir /opt/svn/wechat;   然后创建svn版本库    svnadmin create /opt/svn/wechat;
【创建用户组权限】
创建好后,创建用户组权限:打开/opt/svn/wechat/conf/authz文件,加上
[grounps]
team = xman,superman
[/]  (代表该组在该目录下所有文件都具有读写权限)
@team = rw
如果需要配置某个文件夹里不同权限:则
[/MaiKing/]
superman = r
【创建用户名和密码】
然后创建用户名和密码,打开/opt/svn/wechat/conf/passwd文件,加上
xman= xman
superman= superman
【配置文件】
用户创建完毕,然后再打开/opt/svn/wechat/conf/svnserve.conf
将文件中general下的键值对的注释去掉
包括:
anon-access = read
auth-access = write
password-db = password
authz-db = authz
realm = My First …..
【checkout到项目目录】
然后checkout到项目根目录,先打开根目录
然后checkout版本库   svn co svn://127.0.0.1:3690/wechat
然后输入服务器密码,输入svn账号,即可成功checkout
checkout完后wechat文件就是我们的项目目录啦
【创建hook】
然后创建hook,以便本地提交自动更新到项目根目录
vi /opt/svn/wechat/hooks/post-commit
然后输入:
#!/bin/sh
export LANG=en_US.UTF-8 #svn 编码是UTF-8
/usr/bin/svn update –username=xman –password=xman –no-auth-cache –non-interactive /alidata/www/wechat
然后wq保存。
保存好后再给post-commit这个hook文件设置权限:chmod 744 post-commit