## 递归简介
程序调用自身的编程技巧称为递归。递归可以理解为特殊的循环。
~~~
function getlist($pid){
if($row){
getlist($pid);
}
return $result;
}
~~~
1)参数引用&
~~~
//参数引用&
function deeploop(&$i = 1) {
echo $i;
$i++;
if ($i < 10) {
deeploop($i);
}
}
~~~
2)$_GLOBALS[result]
~~~
$i = 1;
function deeploop() {
global $i;
echo $i;
$i++;
if ($i < 10) {
deeploop($i);
}
}
deeploop();
~~~
3)static $result
~~~
function deeploop() {
static $i=1;
echo $i;
$i++;
if ($i < 10) {
deeploop($i);
}
}
deeploop();
~~~
## 递归函数的使用
1. 如果函数A调用函数B,而发现函数B的代码实现与函数A完全相同,一次类推,此时就需要封装为递归函数。
2. php实现目录的遍历,目录的复制,删除非空目录操作必须通过递归函数实现。
3. 像无限极分类也可以通过递归实现。
~~~
<?php
header('content-type:text/html;charset=utf-8');
//递归函数的例子
function test($i) {
echo $i, '<br/>';
--$i;
if ($i >= 0) {
test($i);
}
}
test(3);
?>
~~~
require_once 相当于,把文件内容合并到一块了。
## 无限分类
用父ID实现的无限分类
使用递归算法,表中的一个字段id,一个字段pid.使用递归直到顶层。
## 全路径实现的无限分类
表中有一个字段path:1,2,3.使用where path like '1,2,3,%' order by cpath asc查出它及其子类的列表。
![](https://box.kancloud.cn/c46f6d9e0535e481922b8dd7e7c5fa97_1274x1008.jpeg)
- 简介
- Cookie
- HTML5 LocalStorage
- session
- 当浏览器关闭后,Session就销毁了吗?
- mysql数据库保存session
- HTTP协议的由来
- fsockopen异步请求
- http防盗链
- Apache伪静态知识补充
- 大并发量解决方案
- 大型网站是怎样解决多用户高并发访问
- 网站高并发 大流量访问的处理及解决方法
- 并发数与在线客户数 注册用户数的关系
- 即时聊天程序
- 反向Ajax实现
- ob缓存作用
- 浅聊并发之战
- php扩展安装
- php安装redis扩展
- SQLMap自动化实施SQL注入共计
- 命名空间namespace
- 集群和分布式之【session共享】
- php Redis存储Session 【1】
- php Redis存储Session 【2】
- php mysql存储session【1】
- php缓存
- 文件缓存
- memcache和redis的比较
- 原生session与session in redis对比
- XSS攻击【1】
- XSS攻击【2】
- PHP消息队列
- php+mysql 模拟发送邮件队列
- php+mysql 模拟订单处理队列
- php+redis 模拟秒杀队列
- RabbitMQ 消息队列系统
- beanstalkd
- PHP构建即时通讯
- WebSocket协议
- workerman
- PHP变量的作用域
- PHP传值和传引用的区别
- PHP匿名函数
- PHP递归函数&应用
- PHP单例模式
- PHP性能优化
- RESTful
- 集群
- 增加pgsql扩展
- php.ini路径查找
- Swoole Compiler
- mysql 主从
- 主从
- mysql-proxy
- window docker环境