【www.bbyears.com--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 < $row["level"]; $i++)
{
echo "t";
}
echo $row["cname"] . "n";
}
?>