好得很程序员自学网
  • 首页
  • 后端语言
    • 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框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>CMS系统>Dedecms
<tfoot draggable='sEl'></tfoot>

php查询数据使用递归 php的递归

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

本文目录一览: 1、 [PHP][THNIKPHP]如何递归查询数据库 2、 php递归查询 3、 PHP怎么递归 [PHP][THNIKPHP]如何递归查询数据库

function get_category($id){

$str=array();

//$sql = "select * from biao where id=$id";查询节点,自己写吧

$result = array('id'=>,'parent_id'=>);//查询结果一个数组格式

if($result){

$str = get_category($result['parent_id']);

$str[]=$result;

}

return $str;

}

}

调用get_category()就行了,$str第一个元素是节点本身,去掉就行了。

php递归查询

function myfun($id)

  {

    $sql = "select `path` from `table` ";

    $rs = mysql_query($sql);

    while($rs =mysql_fetch_array($rs)){

        $arr[]=explode('-',$rs);

        }

    $sql = "select $id from `table` ";

    $rs = mysql_query($sql);

    foreach($arr as $val){

        if($val==mysql_fetch_array($rs)){

            echo $val;

            }}

        }

  // 以上不是递归做的 以下递归写的

        function myfun($id)

        {

            $sql = "select `pid` from `table` ";

            $rs = mysql_query($sql);

         while($rs =mysql_fetch_array($rs)){

            $arr[]=$rs;

        }}

        function myfun_2($id){

        if($id<=count($arr)){

         foreach($arr as $val){

            if($val!=$id){

                echo $id_1.=myfun_1($id);

            }else{

                    $id++;}

            }

            return $id_1; }

        }

PHP怎么递归

下面我举一个其他的例子,虽然不是族谱,但是原理都是一样的。

在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性。那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类。

递归,简单的说就是一段程序代码的重复调用,当把代码写到一个自定义函数中,将参数等变量保存,函数中重复调用函数,直到达到某个条件才跳出,返回相应的数据。

Mysql

首先我们准备一张数据表class,记录商品分类信息。表中有三个字段,id:分类编号,主键自增长;title:分类名称;pid:所属上级分类id。

class表结构:

CREATE TABLE IF NOT EXISTS `class` (

`id` mediumint(6) NOT NULL AUTO_INCREMENT,

`title` varchar(30) NOT NULL,

`pid` mediumint(6) NOT NULL DEFAULT '0',

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

插入数据后,如图:

PHP

根据不同的需求,我们提供两种不同格式的自定义函数,一种是返回字符串,一种是返回数组,两种函数都使用了递归方法。先看返回字符串格式的函数:

function get_str($id = 0) {

global $str;

$sql = "select id,title from class where pid= $id";

$result = mysql_query($sql);//查询pid的子类的分类

if($result mysql_affected_rows()){//如果有子类

$str .= '<ul>';

while ($row = mysql_fetch_array($result)) { //循环记录集

$str .= "<li>" . $row['id'] . "--" . $row['title'] . "</li>"; //构建字符串

get_str($row['id']); //调用get_str(),将记录集中的id参数传入函数中,继续查询下级

}

$str .= '</ul>';

}

return $str;

}

以上函数get_str()通过递归,不断查询下级分类,并最终返回字符串,大家可以根据项目需求修改其中的str,最终生成一个无限分级列表:

include_once('connect.php'); //连接数据库,connect.php文件自己写一个啊

echo get_str(0); //输出无限级分类

效果如:

接着我们来看返回数组格式的函数,一样要使用递归:

function get_array($id=0){

$sql = "select id,title from class where pid= $id";

$result = mysql_query($sql);//查询子类

$arr = array();

if($result mysql_affected_rows()){//如果有子类

while($rows=mysql_fetch_assoc($result)){ //循环记录集

$rows['list'] = get_array($rows['id']); //调用函数,传入参数,继续查询下级

$arr[] = $rows; //组合数组

}

return $arr;

}

}

函数get_array()返回了数组,这是我们期待的,所以笔者推荐使用get_array()得到数组,这样一来,我们可以对数组进行任意操作,比如我们可以将数组转换成json格式的数据传给前端页面,前端页面可以通过解析json数据灵活展示分类信息。比如树形结构的分类列表,下拉分类列表等。

include_once('connect.php'); //连接数据库

$list = get_array(0); //调用函数

print_r($list); //输出数组

输出效果如:

如果要输出json格式的数据,则可使用:

echo json_encode($list);

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

查看更多关于php查询数据使用递归 php的递归的详细内容...

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

上一篇: 宝塔图片上传php 宝塔图片上传图床

下一篇:php结束if循环 if语句跳出for循环

相关资讯

最新资料更新

  • 1.织梦DedeCMS缩略图失真模糊完美解决方法
  • 2.织梦登陆后台卡死无法进入的解决方法
  • 3.DEDE列表页及文章页调用TAG标签并加入自己的样式
  • 4.解析织梦DedeCMS图片按月存放的实现方法
  • 5.dedecms图片相关问题—后台上传图片实现图片轮播
  • 6.DEDECMS织梦likearticle 调用全站相关文章
  • 7.DEDECMS解析模板之灵活应用视图类
  • 8.dedecms添加登录管理认证码的方法
  • 9.dedecms5.7联动类型无法显示的解决方法
  • 10.织梦dedecms页面获取会员状态的方法
  • 11.dedecms 模板调用解析最简代码
  • 12.DEDE集成百度搜索谷歌搜索站内全站搜索站内按栏目搜索等功能的搜索栏
  • 13.织梦DEDECMS后台验证码错误不能正常验证的3种可能原因和解决方法
  • 14.dedecms自定义模型提示:Call to a member function GetInnerT
  • 15.DEDECMS系统分页标签自定义二次开发实例
  • 16.DEDECMS 留言薄模块的使用方法
  • 17.织梦(dedecms)循环调用多级子栏目如二级栏目下三级栏目
  • 18.dede织梦(dede5.7)上传图片出现302以及Error 2038问题解决方法
  • 19.Dedecms自定义模型解决会员无法投稿的方法
  • 20.织梦如何让channelartlist标签支持limit属性

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

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