## 遞歸簡介
程序調用自身的編程技巧稱為遞歸。遞歸可以理解為特殊的循環。
~~~
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查出它及其子類的列表。

- 簡介
- 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環境