下面是使用递归函数的一个小例子。

目的是根据parent_id和task_id对task进行分类。
具体实现:

<?php
//连接数据库,使用前几天创建的数据库连接文件进行连接,如果没有这个文件可以去我的博客里找一下
require_once('./db.php');
$connect = DB::getInstance()->connect();
$sql = 'select task_id, parent_id, task from t_task order by parent_id asc';
$res = $connect->query($sql);//这里设置一个数据,用来存放task下是否有别的task
$tasks = array();
//下面就来存放,一看就懂
while(list($task_id, $parent_id, $task) = $res->fetch()) {$tasks[$parent_id][$task_id] = $task;
}
//可以输出一下tasks看看是什么样的,见图1-1,可以看出它其实就是将每一个task根绝parent_id分成了不同的组
//定义递归函数
function make_list($parent) {global $tasks;//引入$tasksecho '<ol>';foreach($parent as $task_id => $todo) {//将$parent中的数组进行循环echo '<li>'.$todo;//如果$tasks中有task_id的话,代表这个task_id的task是有子task的,也就是有task的task_id的parent_id是这个task_id,说的可能有点复杂,其实仔细想一想还是很简单的,就是判断是否有子task//如果有的话就把这个task_id当做值再次传入make_list(),然后查找它有没有子taskif(isset($tasks[$task_id])) {make_list($tasks[$task_id]);}echo '</li>';}echo '</ol>';
}
?>

图1-1

最终输出结果:

PHP中使用递归函数相关推荐

  1. c语言递归函数检测回文,在C中使用递归函数的回文测试

    我试图编写用于测试字符串的程序,如果它是回文或不是,但我总是得到输出,因为它不是一个.我的代码有什么问题?在C中使用递归函数的回文测试 #include #include int is_palindr ...

  2. 递归 (一): 递归思想与 C++ 中的递归函数及两个递归应用示例 (斐波那契, 汉诺塔)

    您也可以在我的个人网站中查看此文:http://zhaokaifeng.com/?p=1502 谢谢您的访问 : ) 什么是递归 从汇编层面上看递归 在汇编层面上, 递归可以看作是两个循环, 每个循环 ...

  3. python递归函数特点_python中对递归函数的理解

    在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 举个例子,我们来计算阶乘n! = 1 * 2 * 3 * ... * n,用函数fact(n)表示,可以看出: f ...

  4. python递归函数详解-讲解Python中的递归函数

    在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出: ? ...

  5. JavaScript中使用递归函数

    递归是一种用于解决计算机问题的技术,方法是创建一个调用自身的函数,直到程序达到预期的结果. 递归函数示例 举个简单的例子: 假设有个记录数字1-5的函数,如下所示: function log(num) ...

  6. python中的递归函数(以阶乘和莱布尼茨公式逼近圆周率为例)

    递归函数,顾名思义是自己一步步完成这个程序的设定目标,从而输出我们想要的目标,这其中可以将复杂的代码和运算简化,大大节约了内存和可读性. 接下来我先说几个递归函数的要点: 1,递归函数得在自己的函数中 ...

  7. JS----JavaScript中的递归函数

    递归函数 递归函数: 在函数内部自身调用自身的函数. 循环能做的所有事情 递归都能做 循环做不了的事情 递归也能做 方法: 找临界值:无须计算,即可得出的值:-退出递归的条件 if(i==1){ret ...

  8. python中的递归函数是什么_Python中的递归函数

    递归函数recursion 函数直接或者间接调用自身,这就是递归函数.能用递归函数解决的问题,一般使用循环也可以解决.递归函数一定要有边界 递归函数的案例 一.斐波那契数列 求斐波那契数列前n项 de ...

  9. python中的递归函数是什么_Python中的递归函数是什么

    Python 递归函数 递归的特性: 1.调用自身函数 2.有一个结束条件 3.递归效率不高,可能会导致栈溢出(函数调用是通过栈这种数据结构实现的,每进入一个函数调用,栈就会增加一层栈帧,函数每返回, ...

最新文章

  1. yum 安装php7和相关扩展
  2. Zedboard学习(七):VGA显示
  3. 微信公众平台前端开发技巧分享
  4. 机器学习资料第3版,助你继续成长!
  5. jdk11 jdk12_JDK 12附带紧凑数字格式
  6. jmeter接口测试----8用户定义的变量
  7. 关于oracle with as用法
  8. ORACLE数据库常见问题诊断方法 ---(常见错误篇)
  9. 调试网页PAIP HTML的调试与分析工具
  10. 线代总结1 线性代数中的线性方程组
  11. python选择排序代码_Python 数据结构与算法——选择排序(迭代版、递归版)
  12. 学不会PDF裁剪与PDF拆分?6个方法包你轻松学会
  13. CAP、BASE理论
  14. java 导出word换行_[原创]java导出word的5种方式
  15. 不能启动的问题 社区版安装后_Windows To Go安装使用手记
  16. 微信闪退的修复方法分享
  17. 腾讯优图一年记:贾佳亚的专访笔记
  18. 上市连续12季高增长的秘密|多肽链对话1药网于刚
  19. oracle 朱志辉_甲骨文(Oracle)授权教育中心落户我校
  20. BOGEER博格尔YT-813码表使用说明书 (我的是YT-823)

热门文章

  1. matlab 方差计算
  2. 赖大师新文章 :Xilinx 开箱-KV260相机,两个小时轻松搞定,文章不能用我坐飞机过去帮你调哈。
  3. 图解机器学习-稀疏学习-matlab源码
  4. mysql中sum函数使用_MySQL中的SUM函数使用教程_MySQL
  5. 联想v360安装linux双系统,联想V360在WIN7下安装XP双系统完美运行攻略.doc
  6. button的setClickable 和 setEnabled 区别
  7. python无法导入模块_pycharm无法导入本地模块的解决方式
  8. 数据结构:递归算法时间复杂度与空间复杂度计算方法
  9. linux C 基于事件回调的epoll反应堆模型
  10. 页面左侧二级菜单20种案例