php树型菜单类
原理简单,学过数据结构的一看就明白是什么道理了,不过今天在使用时数据中出现了子节点id(71)小于父节点id(104).导致部分子节点没被存储入数组,修改了一下,实例代码如下:
<?php class tree { var $data = array (); var $child = array (-1=> array ()); var $layer = array (-1=>-1); var $parent = array (); var $num = array (); function setnode( $id , $parent , $value , $num =0) { $parent = $parent ? $parent : 0; $this ->data[ $id ] = $value ; $this ->num[ $id ] = $num ; if (!isset( $this ->child[ $id ])) $this ->child[ $id ] = array (); $this ->child[ $parent ][] = $id ; $this ->parent[ $id ] = $parent ; if (!isset( $this ->layer[ $parent ]) && $parent == 0) { $this ->layer[ $id ] = 0; } else { $this ->layer[ $id ] = $this ->layer[ $parent ] + 1; } } function getlist(& $tree , $root = 0) { foreach ( $this ->child[ $root ] as $key => $id ) { $tree [] = $id ; if ( $this ->child[ $id ]) $this ->getlist( $tree , $id ); } } function getvalue( $id ) { if ( $this ->layer[ $id ]==0) { return $this ->data[ $id ]; } else { return $leftmar . $this ->data[ $id ]; } } function getnum( $id ) { return $this ->num[ $id ]; } function getbitvalue( $id ) { return $this ->data[ $id ]; } function getlayer( $id , $space = false) { return $space ? str_repeat ( $space , $this ->layer[ $id ]) : $this ->layer[ $id ]; } function getparent( $id ) { return $this ->parent[ $id ]; } function getparents( $id ) { while ( $this ->parent[ $id ] != -1) { $id = $parent [ $this ->layer[ $id ]] = $this ->parent[ $id ]; } ksort( $parent ); reset( $parent ); return $parent ; } function getchild( $id ) { return $this ->child[ $id ]; } function getchilds( $id = 0) { $child = array ( $id ); $this ->getlist( $child , $id ); return $child ; } function printdata() { return $this ->layer; } } ?>查看更多关于php树型菜单类 - php类库的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did29545