加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php无限级分类 带层深 算法

发布时间:2022-02-14 08:41:17 所属栏目:PHP教程 来源:互联网
导读:一个利用数组来实现无限级分类php类程序,有需要的朋友可参考,这里就不多说什么了直接复制上代码. php无限级分类(带层深)算法实例代码如下: ?php $cates = array( array( cid = 1, cname = 新闻, pid = 0 ), array( cid = 2, cname = 通知, pid = 0 ), arra
  一个利用数组来实现无限级分类php类程序,有需要的朋友可参考,这里就不多说什么了直接复制上代码.
 
  php无限级分类(带层深)算法实例代码如下:
 
  <?php
  $cates = array(
   array(
    'cid'   => 1,
    'cname' => '新闻',
    'pid'   => 0
   ),
  
   array(
    'cid'   => 2,
    'cname' => '通知',
    'pid'   => 0
   ),
  
   array(
    'cid'   => 3,
    'cname' => '国内新闻',
    'pid'   => 1
   ),
  
   array(
    'cid'   => 4,
    'cname' => '国际新闻',
    'pid'   => 1
   ),
  
   array(
    'cid'   => 5,
    'cname' => '北京新闻',
    'pid'   => 3
   ),
  
   array(
    'cid'   => 6,
    'cname' => '上海新闻',
    'pid'   => 3
   ),
  
   array(
    'cid'   => 7,
    'cname' => '紧急通知',
    'pid'   => 2
   ),
  
   array(
    'cid'   => 8,
    'cname' => '一般通知',
    'pid'   => 2
   ),
  );
  
  /**
   * 生成菜单
   *
   * @param array $data 原始数据
   * @param integer $pid 当前分类的父id
   * @return array 处理后数据
   */
  function createMenuTree($data = array(), $pid = 0)
  {
   if (emptyempty($data))
   {
    return array();
   }
  
   static $level = 0;
  
   $returnArray = array();
  
   foreach ($data as $node)
   {
    if ($node['pid'] == $pid)
    {
     $returnArray[] = array(
      'cid'   => $node['cid'],
      'cname' => $node['cname'],
      'level' => $level
     );
  
     if (hasChild($node['cid'], $data))
     {
      $level++;
  
      $returnArray = array_merge($returnArray, createMenuTree($data, $node['cid']));
  
      $level--;
     }
    }
   }
  
   return $returnArray;
  }
  
  /**
   * 检查是否有子分类
   *
   * @param integer $cid 当前分类的id
   * @param array $data 原始数据
   * @return boolean 是否有子分类
   */
  function hasChild($cid, $data)
  {
   $hasChild = false;
  
   foreach ($data as $node)
   {
    if ($node['pid'] == $cid)
    {
     $hasChild = true;
     break;
    }
   }
  
   return $hasChild;
  }
  
  header('Content-Type: text/html; charset=utf-8');
  
  $result = createMenuTree($cates);
  //开源代码Cuoxin.com
  foreach ($result as $row)
  {
   for ($i = 0; $i < $row['level']; $i++)
   {
    echo "t";
   }
  
   echo $row['cname'] . "n";
  }
  ?> 

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读