欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-04-25 23:23:29
...
一个利用数组来实现无限级分类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...