树形菜单是很多应用中会碰到的一个算法,下文小编就为大家介绍php树形菜单实现方法。
数据库结果
打印如下:
代码如下 | 复制代码 |
array(7) { [0] => array(5) { ["id"] => string(1) "4" ["fzname"] => string(12) "山猫小号" ["userid"] => string(2) "12" ["pid"] => string(1) "0" ["time"] => string(10) "1413359977" } [1] => array(5) { ["id"] => string(1) "5" ["fzname"] => string(12) "山猫一组" ["userid"] => string(2) "12" ["pid"] => string(1) "4" ["time"] => string(10) "1413361206" } [2] => array(5) { ["id"] => string(1) "6" ["fzname"] => string(12) "山猫二组" ["userid"] => string(2) "12" ["pid"] => string(1) "4" ["time"] => string(10) "1413361225" } [3] => array(5) { ["id"] => string(1) "7" ["fzname"] => string(15) "山猫一组子" ["userid"] => string(2) "12" ["pid"] => string(1) "5" ["time"] => string(10) "1413361388" } [4] => array(5) { ["id"] => string(1) "8" ["fzname"] => string(15) "山猫一组子" ["userid"] => string(2) "12" ["pid"] => string(1) "5" ["time"] => string(10) "1413361409" } [5] => array(5) { ["id"] => string(1) "9" ["fzname"] => string(16) "山猫一组子3" ["userid"] => string(2) "12" ["pid"] => string(1) "5" ["time"] => string(10) "1413361460" } [6] => array(5) { ["id"] => string(2) "10" ["fzname"] => string(15) "山猫二组子" ["userid"] => string(2) "12" ["pid"] => string(1) "6" ["time"] => string(10) "1413361506" } } |
结果:
打印如下:
代码如下 | 复制代码 |
array(1) { [0] => array(5) { ["id"] => string(1) "4" ["fzname"] => string(12) "山猫小号" ["userid"] => string(2) "12" ["pid"] => array(2) { [0] => array(5) { ["id"] => string(1) "5" ["fzname"] => string(12) "山猫一组" ["userid"] => string(2) "12" ["pid"] => array(3) { [0] => array(5) { ["id"] => string(1) "7" ["fzname"] => string(15) "山猫一组子" ["userid"] => string(2) "12" ["pid"] => string(0) "" ["time"] => string(10) "1413361388" } [1] => array(5) { ["id"] => string(1) "8" ["fzname"] => string(15) "山猫一组子" ["userid"] => string(2) "12" ["pid"] => string(0) "" ["time"] => string(10) "1413361409" } [2] => array(5) { ["id"] => string(1) "9" ["fzname"] => string(16) "山猫一组子3" ["userid"] => string(2) "12" ["pid"] => string(0) "" ["time"] => string(10) "1413361460" } } ["time"] => string(10) "1413361206" } [1] => array(5) { ["id"] => string(1) "6" ["fzname"] => string(12) "山猫二组" ["userid"] => string(2) "12" ["pid"] => array(1) { [0] => array(5) { ["id"] => string(2) "10" ["fzname"] => string(15) "山猫二组子" ["userid"] => string(2) "12" ["pid"] => string(0) "" ["time"] => string(10) "1413361506" } } ["time"] => string(10) "1413361225" } } ["time"] => string(10) "1413359977" } } |
工用到两个函数1生成树形代码:
代码如下 | 复制代码 |
function getTree($data, $pId) { $tree = ''; foreach($data as $k => $v) { if($v['pid'] == $pId) { $v['pid'] = $this->getTree($data, $v['id']); $tree[] = $v; //unset($data[$k]); } } return $tree; } |
函数2转化为html代码:
代码如下 | 复制代码 |
function procHtml($tree) { $html = ''; foreach($tree as $t) { if($t['pid'] == '') { $html .= " } else { $html .= " $html .= $this->procHtml($t['pid']); $html = $html." } } return $html ? '
} |