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 (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";
}
?>
關鍵字:php、無限級分類、類程序
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解