本文實例講述了php基於閉包實作函數的自呼叫(遞歸)的方法。分享給大家供大家參考,具體如下:
php的閉包可能不常用,但是在某些場合之下還是可以考慮用php的閉包來實現某些功能的,比如遞歸,這裡講一下用php的閉包實作遞歸
//php闭包实现函数的自调用,也就是实现递归 function closure($n,$counter,$max){ //匿名函数,这里函数的参数加&符号是,引址调用参数自己 $fn = function (&$n,&$counter,&$max=1) use(&$fn){//use参数传递的是函数闭包函数自身 $n++; if($n < $max){//递归点,也就是递归的条件 $counter .=$n.'<br />'; //递归调用自己 $fn($n,$counter,$max); } return $counter; };//记得这里必须加``;``分号,不加分号php会报错,闭包函数 /* *这里函数closure的返回值就是调用闭包的匿名函数 *而闭包函数,引用closure函数传进来的参数 */ return $fn($n,$counter,$max); } echo (closure(0,'',10));
#這是一個簡單的使用php閉包實作遞歸的函數,其實,假如我們對這個函數稍微修改一下,是可以實現很多功能的,比如說,無限極分類。
關於裡面的閉包函數,其實,我們也可以不用引用外面的closure參數,裡面的閉包函數的參數,我們可以在closure的內部設定。
我們也可以不用回傳閉包函數的值,因為閉包函數是在closure函數裡面,我們可以在closure裡面設定變數傳遞給閉包函數,然後,用閉包遞迴取得我們想要的東西儲存在陣列中,再利用closure函數傳回閉包函數取得的東西,所以,閉包函數也可以沒有回傳值的,關鍵是你要取得什麼東西。
總之,你只要利用這個閉包函數實作你要的東西,然後傳回你需要的東西即可,不一定要從閉包函數的回傳值中取得。
以上就是php基於閉包實作函數的自呼叫(遞迴)實例分析 的內容,更多相關內容請關注PHP中文網(www.php.cn) !