遞迴函式是我們常用到的一類函式,最基本的特點是函式自身呼叫自身,但必須在呼叫自身前有條件判斷,否則會無限呼叫下去。
一般來說,遞迴函式可利用全域性變數,引用,靜態變數,但需對他們的作用範圍有所理解。遞迴函式也是解決無限級分類的乙個很好的技巧。
一、利用引用做引數
php 的引用允許用兩個變數來指向同乙個內容,例如 $a = &$b; 這意味著 $a 和 $b 指向了同乙個變數。
如下例子,因為 $data 使用了引用傳遞,所以資料會一直累加。
function recursion(&$data = , $i = 0) return $data;}// 呼叫$this->recursion(); // [0,1,2,3,4,5,6,7,8,9]
二、利用全域性變數global 在函式內申明變數不過是外部變數的同名引用。變數的作用範圍仍然在本函式範圍內。改變這些變數的值,外部同名變數的值自然也改變了。
function recursion($data = , $i = 0) return $data;}// 呼叫$this->recursion(); // [0,1,2,3,4,5,6,7,8,9]
三、利用靜態變數靜態變數只在第一次呼叫時初始化。僅在區域性函式域中存在,但當程式執行離開此作用域時,其值並不丟失。
function recursion($i = 0) return $data;}// 呼叫$this->recursion(); // [0,1,2,3,4,5,6,7,8,9]
PHP利用遞迴實現無極限分類
所謂的無極限分類就是乙個類可以分成多個子類,然後乙個子類又可以分出另外多個子類。首先建立乙個資料庫 create table if not exists category id int 10 unsigned not null auto increment,pid int 10 name varch...
PHP無限級分類實現(遞迴 非遞迴)
created by phpstorm.user qishou date 15 8 2 time 上午12 00 準備陣列,代替從資料庫中檢索出的資料 共有三個必須欄位id,name,pid header content type text html charset utf 8 categories...
PHP無限級分類實現(遞迴 非遞迴)
created by phpstorm.user qishou date 15 8 2 time 上午12 00 準備陣列,代替從資料庫中檢索出的資料 共有三個必須欄位id,name,pid header content type text html charset utf 8 categories...