PHP遞歸實(shí)現(xiàn)層級樹狀展開
本文實(shí)例為大家分享了PHP遞歸實(shí)現(xiàn)層級樹狀展開的主要代碼,供大家參考,具體內(nèi)容如下
效果圖:

實(shí)現(xiàn)代碼:
<?php
$db = mysql_connect('localhost', 'root', 'root') or die('Can\'t connect to database');
mysql_select_db('test') or die('Can\'t find database : test');
$result = mysql_query('select id, fid, name from tree');
while($arr = mysql_fetch_array($result)){
$data[] = array(
'id' => $arr['id'],
'fid' => $arr['fid'],
'name' => $arr['name'],
);
}
// 將數(shù)據(jù)按照縮進(jìn)簡單排列 見圖1
function data2arr($tree, $rootId = 0, $level = 0) {
foreach($tree as $leaf) {
if($leaf['fid'] == $rootId) {
echo str_repeat(' ', $level) . $leaf['id'] . ' ' . $leaf['name'] . '<br/>';
foreach($tree as $l) {
if($l['fid'] == $leaf['id']) {
data2arr($tree, $leaf['id'], $level + 1);
break;
}
}
}
}
}
data2arr($data);
echo '<br/>-----------------------------------------------------------------------<br/>';
// 將數(shù)據(jù)按照所屬關(guān)系封裝 見圖2
function arr2tree($tree, $rootId = 0) {
$return = array();
foreach($tree as $leaf) {
if($leaf['fid'] == $rootId) {
foreach($tree as $subleaf) {
if($subleaf['fid'] == $leaf['id']) {
$leaf['children'] = arr2tree($tree, $leaf['id']);
break;
}
}
$return[] = $leaf;
}
}
return $return;
}
$tree = arr2tree($data);
print_r($tree);
echo '<br/>-----------------------------------------------------------------------<br/>';
// 將數(shù)據(jù)使用HTML再次展現(xiàn) 見圖3
function tree2html($tree) {
echo '<ul>';
foreach($tree as $leaf) {
echo '<li>' .$leaf['name'];
if(! emptyempty($leaf['children'])) tree2html($leaf['children']);
echo '</li>';
}
echo '</ul>';
}
tree2html($tree);
以上就是本文的全部內(nèi)容,希望對大家學(xué)習(xí)php程序設(shè)計有所幫助。
- php遍歷樹的常用方法匯總
- PHP實(shí)現(xiàn)二叉樹的深度優(yōu)先與廣度優(yōu)先遍歷方法
- PHP生成樹的方法
- php FLEA中二叉樹數(shù)組的遍歷輸出
- PHP實(shí)現(xiàn)的線索二叉樹及二叉樹遍歷方法詳解
- PHP Class&Object -- 解析PHP實(shí)現(xiàn)二叉樹
- PHP樹的深度編歷生成迷宮及A*自動尋路算法實(shí)例分析
- PHP樹-不需要遞歸的實(shí)現(xiàn)方法
- PHP Class&Object -- PHP 自排序二叉樹的深入解析
- php實(shí)現(xiàn)的二叉樹遍歷算法示例
- PHP構(gòu)造二叉樹算法示例
- PHP字典樹(Trie樹)定義與實(shí)現(xiàn)方法示例
相關(guān)文章
PHP超級全局變量、魔術(shù)變量和魔術(shù)函數(shù)匯總整理
這篇文章主要介紹了PHP超級全局變量、魔術(shù)變量和魔術(shù)函數(shù)匯總整理,有需要的同學(xué)可以看下2021-02-02
PHP函數(shù)實(shí)現(xiàn)從一個文本字符串中提取關(guān)鍵字的方法
這篇文章主要介紹了PHP函數(shù)實(shí)現(xiàn)從一個文本字符串中提取關(guān)鍵字的方法,涉及php針對字符串的遍歷與查找等操作技巧,需要的朋友可以參考下2015-07-07
php使用mysqli向數(shù)據(jù)庫添加數(shù)據(jù)的方法
這篇文章主要介紹了php使用mysqli向數(shù)據(jù)庫添加數(shù)據(jù)的方法,實(shí)例分析了php使用mysqli進(jìn)行數(shù)據(jù)庫操作的技巧,非常具有實(shí)用價值,需要的朋友可以參考下2015-03-03
PHP通過header實(shí)現(xiàn)文本文件下載的代碼
所謂實(shí)現(xiàn)文本文件的下載就是說當(dāng)我們點(diǎn)擊一個文本文件的鏈接的時候不是打開這個文件,而是彈出一個下載對話框讓我們下載2010-08-08
PHP實(shí)現(xiàn)的DES加密解密封裝類完整實(shí)例
這篇文章主要介紹了PHP實(shí)現(xiàn)的DES加密解密封裝類,結(jié)合完整實(shí)例形式分析了php DES加密解密封裝類的定義與使用技巧,需要的朋友可以參考下2017-04-04
解決PHP4.0 和 PHP5.0類構(gòu)造函數(shù)的兼容問題
以下是對解決PHP4.0和PHP5.0類構(gòu)造函數(shù)兼容問題的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考一下2013-08-08

