青海网站建设、网络推广最好的公司--您身边的网站建设专家,马上拿起电话,联系我们:0971-8235355   
青海西宁网站建设、网站制作公司-西宁威势电子信息服务有限公司 首页 |  公司简介 |  网站建设 |  网络推广 |  空间租用 |  域名注册 |  企业邮局 |  网络安全 |  网站编程 |  客服中心 |  联系我们 |  人才招聘
 
西宁威势最新网站制做案例展示
Lastest Project
 
西宁网站建设  
当前位置为:首页 >> ASP编程 >> 正文  
[php]一种无限分类树的结构算法的讨论

文章来源: 西宁威势电子信息服务有限公司     发布时间:2008-12-11    浏览次数:3564    tags:PHP无限分类

 

以下是引用片段:[数组]
  1. <html>   
  2. <head>   
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">   
  4. <script language="javascript">   
  5. //[0,1,'AAA'],其中0值父id,1值本身id,AAA为类别名   
  6. var childmenu = new Array(   
  7.           [0,1,'AAA'],   
  8.           [0,2,'BBB'],   
  9.           [0,3,'CCC'],   
  10.           [1,4,'mmm'],   
  11.           [1,5,'nnn'],   
  12.           [1,6,'ooo'],   
  13.           [2,7,'xxx'],   
  14.           [2,8,'yyy'],   
  15.           [2,9,'zzz'],   
  16.           [4,10,'rrr']   
  17.           );   
  18.              
  19. var loopmenu_num = 1;   
  20. function drawSelect(parentValue,arrMenu,selectName,htmlObj)   
  21. {   
  22.     var strHtml = "";   
  23.     var existparent = false;   
  24.     var k = 0;   
  25.     var arrHtml = new Array();   
  26.   
  27.     //最好先判断arrMenu是不是数组   
  28.     //奇怪,空值居然与0相等,俺的js不够熟,所以把Please Select中的option值设为-1   
  29.     for(i=0; i<arrMenu.length; i++)   
  30.     {   
  31.         if(arrMenu[i][0] == parentValue)   
  32.         {   
  33.             arrHtml[k] += '<option value="'+arrMenu[i][1]+'">'+arrMenu[i][2]+'</option>\n';   
  34.             existparent = true;   
  35.         }   
  36.         k++;   
  37.     }   
  38.        
  39.     if(existparent == false)   
  40.     {   
  41.         htmlObj.innerHTML = "";   
  42.         return;   
  43.     }   
  44.   
  45.     strHtml += '<select name="'+selectName+'[]" class="font1" id="'+selectName+'" onChange="drawSelect(this.value,childmenu,\'catname\',loopselect_'+loopmenu_num+')">\n'  
  46.         +'<option value="-1" selected>Please Select</option>\n';       
  47.          
  48.     strHtml += arrHtml.join("");   
  49.        
  50.     strHtml += '</select>\n';   
  51.   
  52.     strHtml += '<span id="loopselect_'+loopmenu_num+'"></span>';   
  53.     if(htmlObj == null)   
  54.     {   
  55.         document.write(strHtml);   
  56.     }   
  57.     else  
  58.     {   
  59.         htmlObj.innerHTML = strHtml;   
  60.         //alert(htmlObj.innerHTML);   
  61.     }   
  62.     loopmenu_num++;       
  63. }   
  64. </script>   
  65. </head>   
  66.   
  67. <body>   
  68. <form name="srchform" method="post" action="">   
  69. <script language=javascript>drawSelect(0,childmenu,'catname',null);</script>   
  70. </form>   
  71.   
  72. </body>   
  73. </html>  

以下是引用片段:
  1. <?   
  2. //测试数据   
  3. $ar = array(   
  4. array(id=>1,pid=>0),   
  5. array(id=>2,pid=>0),   
  6. array(id=>3,pid=>2),   
  7. array(id=>4,pid=>0),   
  8. array(id=>5,pid=>3),   
  9. array(id=>6,pid=>1),   
  10. array(id=>7,pid=>1),   
  11. array(id=>8,pid=>6),   
  12. array(id=>9,pid=>7),   
  13. array(id=>10,pid=>9)   
  14. );   
  15.   
  16. //排序函数   
  17. function cmd($a,$b) {   
  18.   if($a[pid]==$b[pid]) return 0;   
  19.   return $a[pid]>$b[pid]?1:-1;   
  20. }   
  21.   
  22. //排序,为避免数据中父节点在子节点后面出现,这种情况在多次修改数据后经常会发生的   
  23. //排序的目的就是防止这种情况造成的混乱   
  24. uasort($ar,cmd);   
  25.   
  26. //定义目标数组   
  27. $d = array();   
  28. //定义索引数组,用于记录节点在目标数组的位置   
  29. $ind = array();   
  30.   
  31. foreach($ar as $v) {   
  32.   $v[child] = array(); //给每个节点附加一个child项   
  33.   if($v[pid] == 0) {   
  34.     $i = count($d);   
  35.     $d[$i] = $v;   
  36.     $ind[$v[id]] =& $d[$i];   
  37.   }else {   
  38.     $i = count($ind[$v[pid]][child]);   
  39.     $ind[$v[pid]][child][$i] = $v;   
  40.     $ind[$v[id]] =& $ind[$v[pid]][child][$i];   
  41.   }   
  42. }   
  43. //检查结果   
  44. print_r($d);   
  45. ?>  

上一篇:[ASP]无限分类变数组
下一篇:ASP小偷程序如何利用XMLHTTP实现表单的提交以及cookies或session的发送
评论列表
正在加载评论……
  
评论   
呢  称:
验证码: 若看不清请点击更换!
内  容:
 
 
  在线洽谈咨询:
点击这里,在线洽谈   点击这里,在线洽谈   点击这里,在线洽谈
与我交谈  与我交谈 与我交谈
乘车路线    汇款方式   加盟合作  人才招聘  
公司地址:青海省西宁市西关大街73号(三二四部队招行所四楼)     青ICP备13000578号-1 公安机关备案号:63010402000123    
QQ:147399120    mail:lostlove000@163.com    电话: 13897410341    邮编:810000
© Copyright( 2008-2009) QhWins.Com All Rights Reserved    版权所有:西宁威势电子信息服务有限公司 未经书面制授权,请勿随意转载!
业务:青海网站制做青海网站建设青海网页设计西宁网站制做西宁网站建设青海域名注册青海网络推广青海网站推广青海空间租用青海软件开发网站安全网络安全