网站地图    收藏   

主页 > php专栏 > php应用 >

php无限级分类(带层深)算法 - php高级应用

来源:自学PHP网    时间:2014-11-27 22:16 作者: 阅读:

[导读] 一个利用数组来实现无限级分类php类程序,有需要的朋友可参考,这里就不多说什么了直接复制上代码.php无限级分类(带层深)算法实例代码如下:?php$cates=array(array(#39;cid#39;=1,#39;cname#39......

php无限级分类(带层深)算法

一个利用数组来实现无限级分类php类程序,有需要的朋友可参考,这里就不多说什么了直接复制上代码.

php无限级分类(带层深)算法实例代码如下:

  1. <?php 
  2. $cates = array
  3.  array
  4.   'cid'   => 1, 
  5.   'cname' => '新闻'
  6.   'pid'   => 0 
  7.  ), 
  8.  
  9.  array
  10.   'cid'   => 2, 
  11.   'cname' => '通知'
  12.   'pid'   => 0 
  13.  ), 
  14.  
  15.  array
  16.   'cid'   => 3, 
  17.   'cname' => '国内新闻'
  18.   'pid'   => 1 
  19.  ), 
  20.  
  21.  array
  22.   'cid'   => 4, 
  23.   'cname' => '国际新闻'
  24.   'pid'   => 1 
  25.  ), 
  26.  
  27.  array
  28.   'cid'   => 5, 
  29.   'cname' => '北京新闻'
  30.   'pid'   => 3 
  31.  ), 
  32.  
  33.  array
  34.   'cid'   => 6, 
  35.   'cname' => '上海新闻'
  36.   'pid'   => 3 
  37.  ), 
  38.  
  39.  array
  40.   'cid'   => 7, 
  41.   'cname' => '紧急通知'
  42.   'pid'   => 2 
  43.  ), 
  44.  
  45.  array
  46.   'cid'   => 8, 
  47.   'cname' => '一般通知'
  48.   'pid'   => 2 
  49.  ), 
  50. ); 
  51.  
  52. /** 
  53.  * 生成菜单 
  54.  * 
  55.  * @param array $data 原始数据 
  56.  * @param integer $pid 当前分类的父id 
  57.  * @return array 处理后数据 
  58.  */ 
  59. function createMenuTree($data = array(), $pid = 0) 
  60.  if (emptyempty($data)) 
  61.  { 
  62.   return array(); 
  63.  } 
  64.  
  65.  static $level = 0; 
  66.  
  67.  $returnArray = array(); 
  68.  
  69.  foreach ($data as $node
  70.  { 
  71.   if ($node['pid'] == $pid
  72.   { 
  73.    $returnArray[] = array
  74.     'cid'   => $node['cid'], 
  75.     'cname' => $node['cname'], 
  76.     'level' => $level 
  77.    ); 
  78.  
  79.    if (hasChild($node['cid'], $data)) 
  80.    { 
  81.     $level++; 
  82.  
  83.     $returnArray = array_merge($returnArray, createMenuTree($data$node['cid'])); 
  84.  
  85.     $level--; 
  86.    } 
  87.   } 
  88.  } 
  89.  
  90.  return $returnArray
  91.  
  92. /** 
  93.  * 检查是否有子分类 
  94.  * 
  95.  * @param integer $cid 当前分类的id 
  96.  * @param array $data 原始数据 
  97.  * @return boolean 是否有子分类 
  98.  */ 
  99. function hasChild($cid$data
  100.  $hasChild = false; 
  101.  
  102.  foreach ($data as $node
  103.  { 
  104.   if ($node['pid'] == $cid
  105.   { 
  106.    $hasChild = true; 
  107.    break
  108.   } 
  109.  } 
  110.  
  111.  return $hasChild
  112.  
  113. header('Content-Type: text/html; charset=utf-8'); 
  114.  
  115. $result = createMenuTree($cates); 
  116. //开源代码phpfensi.com 
  117. foreach ($result as $row
  118.  for ($i = 0; $i < $row['level']; $i++) 
  119.  { 
  120.   echo "t"
  121.  } 
  122.  
  123.  echo $row['cname'] . "n"
  124. ?> 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论