PHP 遞迴實現層級樹狀展現資料

來源:互聯網
上載者:User
<?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'],     );}// 將資料按照縮排簡單排列 見圖1function data2arr($tree, $rootId = 0, $level = 0) {    foreach($tree as $leaf) {        if($leaf['fid'] == $rootId) {            echo str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', $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/>';// 將資料按照所屬關係封裝 見圖2function 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再次展現 見圖3function tree2html($tree) {    echo '<ul>';    foreach($tree as $leaf) {        echo '<li>' .$leaf['name'];        if(! empty($leaf['children'])) tree2html($leaf['children']);        echo '</li>';    }    echo '</ul>';}tree2html($tree);
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.