首頁 後端開發 php教程 [分享]PHP兑现树的递归展示

[分享]PHP兑现树的递归展示

Jun 13, 2016 am 10:57 AM
Level name param string

[分享]PHP实现树的递归展示
原文博客地址: http://blog.csdn.net/lgg201/article/details/7973971

用法:

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->usage: php tree-display.php <tree deepth></tree>
登入後複製


测试输出:
PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->$ php tree-display.php 3 name-00000001[1]┇    ┠ name-00000002[2]┇    ┇    ┠ name-00000003[3]┇    ┇    ┠ name-00000004[4]┇    ┇    ┗ name-00000005[5]┇    ┠ name-00000006[6]┇    ┇    ┠ name-00000007[7]┇    ┇    ┠ name-00000008[8]┇    ┇    ┗ name-00000009[9]┇    ┗ name-00000010[10]┇         ┠ name-00000011[11]┇         ┠ name-00000012[12]┇         ┗ name-00000013[13]┠ name-00000014[14]┇    ┠ name-00000015[15]┇    ┇    ┠ name-00000016[16]┇    ┇    ┠ name-00000017[17]┇    ┇    ┗ name-00000018[18]┇    ┠ name-00000019[19]┇    ┇    ┠ name-00000020[20]┇    ┇    ┠ name-00000021[21]┇    ┇    ┗ name-00000022[22]┇    ┗ name-00000023[23]┇         ┠ name-00000024[24]┇         ┠ name-00000025[25]┇         ┗ name-00000026[26]┗ name-00000027[27]     ┠ name-00000028[28]     ┇    ┠ name-00000029[29]     ┇    ┠ name-00000030[30]     ┇    ┗ name-00000031[31]     ┠ name-00000032[32]     ┇    ┠ name-00000033[33]     ┇    ┠ name-00000034[34]     ┇    ┗ name-00000035[35]     ┗ name-00000036[36]          ┠ name-00000037[37]          ┠ name-00000038[38]          ┗ name-00000039[39]resource usage[level: 3, node number: 39]:         clock time: 0.001967s        system cpu: 0.000169s          user cpu: 0.001013s      memory usage: 7208 byte
登入後複製


PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?php /** * 无限级(受尾节点描述算法限制, 详见tree_parse注释)递归菜单 * author: selfimpr * blog: http://blog.csdn.net/lgg201 * mail: [email&#160;protected] */define('MAX_NODES',            3);                        /* 最大子节点数 */define('MAX_NODE_INDEX',    MAX_NODES - 1);            /* 子节点最大索引值 */define('NAME_FMT',            'name-%08d');                /* 节点内容输出格式串 *//* 树节点数据结构 */define('K_ID',                'id');define('K_NAME',            'name');define('K_CHILD',            'children');/* 输出构造时使用的拼装字符 */define('PREFIX_TOP',        '┏');                    /* 第一层第一个节点的标识符 */define('PREFIX_BOTTOM',        '┗');                    /* 每一个父节点的最后一个子节点的标识符 */define('PREFIX_MIDDLE',        '┠');                    /* 所有非上面两种情况的节点的标识符 */define('PREFIX_LINE',        '┇');                    /* 祖先节点的连线符 */define('SPACE',                ' ');                    /* 空白占位(所有尾节点不显示连线符) */define('WIDE_SPACE',        str_repeat(SPACE, 4));    /* 宽的空白占位, 为了让树的层次清晰 *//** * data_build  * 构造一个节点 * @param mixed $id         节点id * @param mixed $is_leaf     是否叶子 * @access public * @return void */function node_build($id, $is_leaf = FALSE) {    return array(        K_ID    => $id,         K_NAME    => sprintf(NAME_FMT, $id),         K_CHILD    => $is_leaf ? NULL : array(),     );}/** * tree_build  * 构造一棵树(树中每个节点的子节点数由MAX_NODES确定) * @param mixed $datas     要返回的树引用 * @param mixed $id     起始ID * @param mixed $level     树的层级 * @access public * @return void */function tree_build(&$datas, &$id, $level) {    if ( $level  0 ) {        $i    = 0;        /* 前缀格式: "父级连线" ["宽空白符" "父级连线" ...] "宽空白符" */        $string    .= ($is_last & 1  $data ) {        /* 当前节点及所有祖先是否尾节点标记 */        $tmp_is_last    = $is_last  0 )         $sum    += pow($s, $n --);    return $sum;}/* 计算ruage时间 */function ru_time($info, $type) {    return $info[$type . '.tv_sec'] + $info[$type . '.tv_usec'] / 1000000;}/* 输出资源使用情况 */function resource_usage($lv, $nodes, $cb, $ce, $mb, $me, $rb, $re) {    printf("\nresource usage[level: %d, node number: %d]: \n%20s%0.6fs\n%20s%0.6fs\n%20s%0.6fs\n%20s%d byte\n",         $lv, $nodes,        'clock time: ',        $ce - $cb,         'system cpu: ',        ru_time($re, 'ru_stime') - ru_time($rb, 'ru_stime'),         'user cpu: ',        ru_time($re, 'ru_utime') - ru_time($rb, 'ru_utime'),         'memory usage: ',    $me - $mb);}/* 用法 */function usage($cmd) {    printf("usage: \n%s <tree deepth>\n", $cmd);    exit;}/* 测试入口函数 */function run() {    global    $argc, $argv;    if ( $argc != 2 || intval($argv[1]) 
                 
              
              
        
            </tree>
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

使用java的String.valueOf()函數將基本資料型別轉換為字串 使用java的String.valueOf()函數將基本資料型別轉換為字串 Jul 24, 2023 pm 07:55 PM

使用java的String.valueOf()函數將基本資料型別轉換為字串

怎麼把char數組轉string 怎麼把char數組轉string Jun 09, 2023 am 10:04 AM

怎麼把char數組轉string

使用java的String.replace()函數替換字串中的字元(字串) 使用java的String.replace()函數替換字串中的字元(字串) Jul 25, 2023 pm 05:16 PM

使用java的String.replace()函數替換字串中的字元(字串)

2w字 詳解 String,yyds 2w字 詳解 String,yyds Aug 24, 2023 pm 03:56 PM

2w字 詳解 String,yyds

Java String中的split方法如何使用 Java String中的split方法如何使用 May 02, 2023 am 09:37 AM

Java String中的split方法如何使用

使用java的String.length()函數取得字串的長度 使用java的String.length()函數取得字串的長度 Jul 25, 2023 am 09:09 AM

使用java的String.length()函數取得字串的長度

java的String類別如何使用 java的String類別如何使用 Apr 19, 2023 pm 01:19 PM

java的String類別如何使用

使用java的String.toLowerCase()函數將字串轉換為小寫 使用java的String.toLowerCase()函數將字串轉換為小寫 Jul 24, 2023 pm 11:52 PM

使用java的String.toLowerCase()函數將字串轉換為小寫

See all articles