企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 递归简介 程序调用自身的编程技巧称为递归。递归可以理解为特殊的循环。 ~~~ 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)