[分享]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 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>

使用Java的String.valueOf()函数将基本数据类型转换为字符串在Java开发中,当我们需要将基本数据类型转换为字符串时,一种常见的方法是使用String类的valueOf()函数。这个函数可以接受基本数据类型的参数,并返回对应的字符串表示。在本文中,我们将探讨如何使用String.valueOf()函数进行基本数据类型转换,并提供一些代码示例来

char数组转string的方法:可以通过赋值来实现,使用{char a[]=" abc d\0efg ";string s=a;}语法,让char数组对string直接赋值,执行代码即可完成转换。

使用Java的String.replace()函数替换字符串中的字符(串)在Java中,字符串是不可变的对象,这意味着一旦创建了一个字符串对象,就无法修改它的值。但是,你可能会遇到需要替换字符串中的某些字符或者字符串的情况。这时候,我们可以使用Java的String类中的replace()方法来实现字符串的替换。String类的replace()方法有两种重

大家好,今天给大家分享java基础知识之String。String类的重要性就不必说了,可以说是我们后端开发用的最多的类,所以,很有必要好好来聊聊它。

String中split方法使用String的split()方法用于按传入的字符或字符串对String进行拆分,返回拆分之后的数组。1、一般用法用一般的字符,例如@或,等符号做分隔符时:Stringaddress="上海@上海市@闵行区@吴中路";String[]splitAddr=address.split("@");System.out.println(splitAddr[0]+splitAddr[1]+splitAddr[2]+splitAddr[3

使用Java的String.length()函数获取字符串的长度在Java编程中,字符串是一种非常常见的数据类型,我们经常需要获取字符串的长度,即字符串中字符的个数。在Java中,我们可以使用String类的length()函数来获取字符串的长度。下面是一个简单的示例代码:publicclassStringLengthExample{publ

一、认识String1.JDK中的String首先我们看看JDK中的String类源码,它实现了很多接口,可以看到String类被final修饰了,这就说明String类不可以被继承,String不存在子类,这样所有使用JDK的人,用到的String类都是同一个,如果String允许被继承,每个人都可以对String进行扩展,每个人使用的String都不是同一个版本,两个不同的人使用相同的方法,表现出不同的结果,这就导致代码没办法进行开发了继承和方法覆写在带来灵活性的同时,也会带来很多子类行为不

String.toLowerCase()函数是Java中一个非常有用且常见的字符串处理函数,它可以将一个字符串转换为小写形式。在本文中,我们将介绍该函数的使用方法,并给出一些相关的代码示例。首先,让我们来看一下String.toLowerCase()函数的基本语法。它没有任何参数,只需要调用它即可。下面是示例代码:Stringstr="Hel


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

드림위버 CS6
시각적 웹 개발 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기
