好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php递归树状菜单 php递归函数桃子一天吃一半

很多站长朋友们都不太清楚php递归树状菜单,今天小编就来给大家整理php递归树状菜单,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 php(菜单的制作,怎么用递归) 2、 求助,php递归里面使用静态变量保存数组,怎么处理成树形结构? 3、 php递归生成树型数组 4、 用php调数据库做树状显示 5、 在php后台中如何实现页面左侧常用的树状多级菜单呢?如果可以的说下原理并留下一个实例吧。谢谢了! 6、 PHP递归树形菜单 php(菜单的制作,怎么用递归)

现在国内很多个人站长都要求无限级菜单,但其实真正商业用,2级或3级菜单足够了。无限级没有意义,而且递归太耗CPU,其实是不足取的。

不过既然问了,还是说一下无限级菜单的原理吧:

1、数据库结构:只有三个字段是必须的:

id:菜单编号

title:菜单标题

pid:上级菜单

2、生成数组:

如果只是用于菜单显示的话,数组可以根据上级分类来取:写一个getArray(pid)的函数,根据上级菜单是什么,来取得同级菜单。顶级菜单的pid是0,如果取得的数据为空,那么就是没有子菜单。

原理就这么简单。你网上看源码,还会有各种其它需求,比如一次树状列出所有菜单等等,所有源码就会显得很复杂。自己根据我说的原理写,相对还是简单的,只是做flash菜单的话,不需要递归。

最好让你老板确定菜单层数,这样写起来会容易得多。

求助,php递归里面使用静态变量保存数组,怎么处理成树形结构?

$arr = [

['cid'=>1,'name'=>1,'pid'=>0],

['cid'=>2,'name'=>2,'pid'=>1],

['cid'=>3,'name'=>3,'pid'=>2],

['cid'=>4,'name'=>4,'pid'=>0],

['cid'=>5,'name'=>5,'pid'=>4],

['cid'=>6,'name'=>6,'pid'=>4],

['cid'=>7,'name'=>7,'pid'=>5],

['cid'=>8,'name'=>8,'pid'=>5],

];

$re = GetTree($arr);

print_r($re);

function GetTree($arr,$pid = 0,$re = []){

foreach($arr as $key=>$val) {

if($val['pid'] == $pid) {

$val['sub'] = GetTree($arr , $val['cid']);

$re[] = $val;

}

}

return $re;

}

php递归生成树型数组

public function tree($list, $parent) {

//保证找到的元素都放在一个数组$tree内,应该是$tree在所有的tree函数都共享

static $tree;

//遍历该数组,找到parent值为当前传递进来的$parent_id;

foreach($list as $row) {

//判断

if($row['parent'] == $parent) {

//保存起来

$tree[] = $row;

//依据当前所找到的分类,找到其子节点,操作相同,递归完成

$this->tree($list, $row['id']);

}

}

return $tree;

}

你把你的数组带进去,这个是在类里面实现的,如果你只是想单独用个方法,你就把public以及'$this->'去掉就行了

用php调数据库做树状显示

数据库设计的时候,通常的做法是用父ID来解决树状结构,也有二叉树等等

id  pid category_name

然后,用递归就能实现,也有引用数组的方式

<?php

/**

 * 此方法由@Tonton 提供

 * 

 * @date 2012-12-12 

 */

function genTree5($items) { 

    foreach ($items as $item) 

        $items[$item['pid']]['son'][$item['id']] = $items[$item['id']]; 

    return isset($items[0]['son']) ? $items[0]['son'] : array(); 

} 

/**

 * 将数据格式化成树形结构

 * @author Xuefen.Tong

 * @param array $items

 * @return array 

 */

function genTree9($items) {

    $tree = array(); //格式化好的树

    foreach ($items as $item)

        if (isset($items[$item['pid']]))

            $items[$item['pid']]['son'][] = $items[$item['id']];

        else

            $tree[] = $items[$item['id']];

    return $tree;

}

$items = array(

    1 => array('id' => 1, 'pid' => 0, 'name' => '江西省'),

    2 => array('id' => 2, 'pid' => 0, 'name' => '黑龙江省'),

    3 => array('id' => 3, 'pid' => 1, 'name' => '南昌市'),

    4 => array('id' => 4, 'pid' => 2, 'name' => '哈尔滨市'),

    5 => array('id' => 5, 'pid' => 2, 'name' => '鸡西市'),

    6 => array('id' => 6, 'pid' => 4, 'name' => '香坊区'),

    7 => array('id' => 7, 'pid' => 4, 'name' => '南岗区'),

    8 => array('id' => 8, 'pid' => 6, 'name' => '和兴路'),

    9 => array('id' => 9, 'pid' => 7, 'name' => '西大直街'),

    10 => array('id' => 10, 'pid' => 8, 'name' => '东北林业大学'),

    11 => array('id' => 11, 'pid' => 9, 'name' => '哈尔滨工业大学'),

    12 => array('id' => 12, 'pid' => 8, 'name' => '哈尔滨师范大学'),

    13 => array('id' => 13, 'pid' => 1, 'name' => '赣州市'),

    14 => array('id' => 14, 'pid' => 13, 'name' => '赣县'),

    15 => array('id' => 15, 'pid' => 13, 'name' => '于都县'),

    16 => array('id' => 16, 'pid' => 14, 'name' => '茅店镇'),

    17 => array('id' => 17, 'pid' => 14, 'name' => '大田乡'),

    18 => array('id' => 18, 'pid' => 16, 'name' => '义源村'),

    19 => array('id' => 19, 'pid' => 16, 'name' => '上坝村'),

);

echo "<pre>";

print_r(genTree5($items));

print_r(genTree9($items));

?>

在php后台中如何实现页面左侧常用的树状多级菜单呢?如果可以的说下原理并留下一个实例吧。谢谢了!

//'name'=>'标题','main_page'=>'左导航','r_nav'=>'默认主页'

$group_type_arr=array(

2=>array('name'=>'企业管理','main_page'=>'admin_enterprise','r_nav'=>'admin_enterprise_open'),

4=>array('name'=>'个人用户管理','main_page'=>'user_ctrl','r_nav'=>'admin_user_dat'),

5=>array('name'=>'点评管理','main_page'=>'comment_ctrl','r_nav'=>'comment'),

7=>array('name'=>'统计管理','main_page'=>'stats_ctrl','r_nav'=>'admin_product_business_count'),

8=>array('name'=>'群组管理','main_page'=>'group_ctrl','r_nav'=>'useradmin'),

);

这是左侧第一级菜单,循环这个,在它里面可以直接加入二级菜单

PHP递归树形菜单

可以参考以下代码,但需要把你自己的数据库链接,表等改一下就可以了

<html>

<head>

<link href='style.css' rel=stylesheet>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script language="JavaScript" src="TreeMenu.js"></script>

</head>

<body>

<?php

//基本变量设置

$GLOBALS["ID"] =1; //用来跟踪下拉菜单的ID号

$layer=1; //用来跟踪当前菜单的级数

//连接数据库

$Con=mysql_connect("localhost","root","1234");

mysql_select_db("wiki");

//提取一级菜单

$sql="SELECT * FROM wiki where pid=0";

$result=mysql_query($sql,$Con);

//如果一级菜单存在则开始菜单的显示

if(mysql_num_rows($result)>0) ShowTreeMenu($Con,$result,$layer,$ID);

//=============================================

//显示树型菜单函数 ShowTreeMenu($con,$result,$layer)

//$con:数据库连接

//$result:需要显示的菜单记录集

//layer:需要显示的菜单的级数

//=============================================

function ShowTreeMenu($Con,$result,$layer)

{

//取得需要显示的菜单的项目数

$numrows=mysql_num_rows($result);

//开始显示菜单,每个子菜单都用一个表格来表示

echo "<table cellpadding='0' cellspacing='0' border='0'>";

for($rows=0;$rows<$numrows;$rows++)

{

//将当前菜单项目的内容导入数组

$menu=mysql_fetch_array($result);

//提取菜单项目的子菜单记录集

$sql="select * from wiki where pid=$menu[cid]";

$result_sub=mysql_query($sql,$Con);

echo "<tr>";

//如果该菜单项目有子菜单,则添加JavaScript onClick语句

if(mysql_num_rows($result_sub)>0)

{

echo "<td width='20'><img src='/data/upload/help/202303/02/b3eb0a7910dcbf9df4d7ab7b9511f96f.gif' border='0'></td>";

echo "<td class='Menu' onClick='javascript:ShowMenu(Menu".$GLOBALS["ID"].");'>";

}

else

{

echo "<td width='20'><img src='/data/upload/help/202303/02/c5ee0ef1b3d3c76b614b20da3f6f6220.gif' border='0'></td>";

echo "<td class='Menu'>";

}

//如果该菜单项目没有子菜单,并指定了超级连接地址,则指定为超级连接,

//否则只显示菜单名称

//if($menu[url]!="")

//echo "<a href='$menu[cid]'>$menu[name]</a>";

//else

echo $menu['name'];

echo "

</td>

</tr>

";

//如果该菜单项目有子菜单,则显示子菜单

if(mysql_num_rows($result_sub)>0)

{

//指定该子菜单的ID和style,以便和onClick语句相对应

echo "<tr id=Menu".$GLOBALS["ID"]++." style='display:none'>";

echo "<td width='20'> </td>";

echo "<td>";

//将级数加1

$layer++;

//递归调用ShowTreeMenu()函数,生成子菜单

ShowTreeMenu($Con,$result_sub,$layer);

//子菜单处理完成,返回到递归的上一层,将级数减1

$layer--;

echo "</td></tr>";

}

//继续显示下一个菜单项目

}

echo "</table>";

}

?>

</body>

</html>

关于php递归树状菜单的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php递归树状菜单 php递归函数桃子一天吃一半的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did208921
更新时间:2023-05-03   阅读:26次

上一篇: button转php BuTTON是什么意思

下一篇:php控制html代码 php控制css

相关资讯

最新资料更新

  • 1.macphp执行权限 macbookpro权限
  • 2.exec-php下载 php exe
  • 3.php数值内存溢出 php大数组内存溢出
  • 4.php解析img PHP解析器
  • 5.node会取代php nodejs会被deno取代吗
  • 6.php二维码读取 php做二维码会用到的技术
  • 7.包含peintphp的词条
  • 8.php课堂系统 php网课系统
  • 9.phpmysql框架 php框架yii
  • 10.php求100的质数 php求出1100的素数
  • 11.php键值怎么转换 php字符转换成数字
  • 12.关于php+imei的信息
  • 13.PHP中嵌入script php嵌入html有哪几种方法
  • 14.学php学什么专业 学php可以干什么工作
  • 15.基于php在线聊天 php 在线聊天
  • 16.php与java同步接口 php和java做服务端对比
  • 17.php拼音模糊查询 php模糊搜索功能
  • 18.php下载控件 php下载器
  • 19.iPad上装php iPad上装修建模app
  • 20.中南php哪家好 中南cp

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]