作者:局外人2502854057 | 来源:互联网 | 2018-07-16 00:55
树形菜单是很多应用中会碰到的一个算法,下文小编就为大家介绍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 .= "{$t['fzname']}";
}
else
{
$html .= "".$t['fzname'];
$html .= $this->procHtml($t['pid']);
$html = $html."";
}
}
return $html ? '' : $html ;
} |