程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP遞歸實現層級樹狀展開,php遞歸層級樹狀

PHP遞歸實現層級樹狀展開,php遞歸層級樹狀

編輯:關於PHP編程

PHP遞歸實現層級樹狀展開,php遞歸層級樹狀


本文實例為大家分享了PHP遞歸實現層級樹狀展開的主要代碼,供大家參考,具體內容如下

效果圖:

實現代碼:

<?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'],  
  ); 
} 
  
// 將數據按照縮進簡單排列 見圖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/>'; 
  
// 將數據按照所屬關系封裝 見圖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/>'; 
  
// 將數據使用HTML再次展現 見圖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);

以上就是本文的全部內容,希望對大家學習php程序設計有所幫助。

您可能感興趣的文章:

  • 淺析PHP遞歸函數返回值使用方法
  • php無限分類且支持輸出樹狀圖的詳細介紹
  • php遞歸獲取目錄內文件(包含子目錄)封裝類分享
  • php遞歸函數中使用return的注意事項
  • php遞歸使用示例(php遞歸函數)
  • php function用法如何遞歸及return和echo區別
  • php 無限級分類,超級簡單的無限級分類,支持輸出樹狀圖
  • php無限極分類遞歸排序實現方法
  • 基於遞歸實現的php樹形菜單代碼
  • php實現遞歸的三種基本方式

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved