首页 > 后端开发 > php教程 > php无限级分类(带层深)算法_PHP教程

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

WBOY
发布: 2016-07-20 11:11:32
原创
1138 人浏览过

一个利用数组来实现无限级分类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 (empty($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);

foreach ($result as $row)
{
 for ($i = 0; $i  {
  echo "t";
 }

 echo $row['cname'] . "n";
}
?>


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/444626.htmlTechArticle一个利用数组来实现无限级分类php类程序,有需要的朋友可参考,这里就不多说什么了直接复制上代码。 代码如下 复制代码 ?php $cates = ar...
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板