PHP無(wú)限級(jí)分類(lèi)生成樹(shù)實(shí)例代碼
一段非常精簡(jiǎn)的PHP無(wú)限極分類(lèi)生成樹(shù)方法,巧在引用。
例子,php實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)。
代碼示例:
<?php
function generateTree($items){
$tree = array();
foreach($items as $item){
if(isset($items[$item['pid']])){
$items[$item['pid']]['son'][] = &$items[$item['id']];
}else{
$tree[] = &$items[$item['id']];
}
}
return $tree;
}
$items = array(
1 => array('id' => 1, 'pid' => 0, 'name' => '安徽省'),
2 => array('id' => 2, 'pid' => 0, 'name' => '浙江省'),
3 => array('id' => 3, 'pid' => 1, 'name' => '合肥市'),
4 => array('id' => 4, 'pid' => 3, 'name' => '長(zhǎng)豐縣'),
5 => array('id' => 5, 'pid' => 1, 'name' => '安慶市'),
);
print_r(generateTree($items));
打印的結(jié)果:
Array
(
[0] => Array
(
[id] => 1
[pid] => 0
[name] => 安徽省
[son] => Array
(
[0] => Array
(
[id] => 3
[pid] => 1
[name] => 合肥市
[son] => Array
(
[0] => Array
(
[id] => 4
[pid] => 3
[name] => 長(zhǎng)豐縣
。
。
)
[1] => Array
(
[id] => 5
[pid] => 1
[name] => 安慶市
。
。
。
[1] => Array
。
[id] => 2
[pid] => 0
[name] => 浙江省
。
。
上面生成樹(shù)方法還可以精簡(jiǎn)到5行:
代碼示例:
<?php
function generateTree($items){
foreach($items as $item)
$items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
return isset($items[0]['son']) ? $items[0]['son'] : array();
}
上面這種無(wú)限極分類(lèi)數(shù)據(jù)樹(shù)形結(jié)構(gòu)化的方法值得借鑒。
感覺(jué)這段代碼實(shí)際用途并不明顯啊,想取出格式化的樹(shù)形數(shù)據(jù)還是要遞歸啊:
代碼示例:
/**
* 如何取數(shù)據(jù)格式化的樹(shù)形數(shù)據(jù)
* @site <
*/
$tree = generateTree($items);
function getTreeData($tree){
foreach($tree as $t){
echo $t['name'].'<br>';
if(isset($t['son'])){
getTreeData($t['son']);
}
}
}
getTreeData($tree);
關(guān)鍵字:PHP、分類(lèi)、生成樹(shù)
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無(wú)AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解