php基于閉包實現(xiàn)函數(shù)的自調(diào)用(遞歸)實例分析
本文實例講述了php基于閉包實現(xiàn)函數(shù)的自調(diào)用(遞歸)的方法。分享給大家供大家參考,具體如下:
php的閉包可能不常用,但是在某些場合之下還是可以考慮用php的閉包來實現(xiàn)某些功能的,比如遞歸,這里講一下用php的閉包實現(xiàn)遞歸
//php閉包實現(xiàn)函數(shù)的自調(diào)用,也就是實現(xiàn)遞歸
function closure($n,$counter,$max){
//匿名函數(shù),這里函數(shù)的參數(shù)加&符號是,引址調(diào)用參數(shù)自己
$fn = function (&$n,&$counter,&$max=1) use(&$fn){//use參數(shù)傳遞的是函數(shù)閉包函數(shù)自身
$n++;
if($n < $max){//遞歸點,也就是遞歸的條件
$counter .=$n.'<br />';
//遞歸調(diào)用自己
$fn($n,$counter,$max);
}
return $counter;
};//記得這里必須加``;``分號,不加分號php會報錯,閉包函數(shù)
/*
*這里函數(shù)closure的返回值就是調(diào)用閉包的匿名函數(shù)
*而閉包函數(shù),引用closure函數(shù)傳進來的參數(shù)
*/
return $fn($n,$counter,$max);
}
echo (closure(0,'',10));
這是一個簡單的使用php閉包實現(xiàn)遞歸的函數(shù),其實,假如我們對這個函數(shù)稍微修改一下,是可以實現(xiàn)很多功能的,比如說,無限極分類。
關(guān)于里面的閉包函數(shù),其實,我們也可以不用引用外面的closure參數(shù),里面的閉包函數(shù)的參數(shù),我們可以在closure的內(nèi)部設(shè)置。
我們也可以不用返回閉包函數(shù)的值,因為閉包函數(shù)是在closure函數(shù)里面,我們可以在closure里面設(shè)置一下變量傳遞給閉包函數(shù),然后,用閉包遞歸獲取我們想要的東西存儲在數(shù)組中,再利用closure函數(shù)返回閉包函數(shù)獲取的東西,所以,閉包函數(shù)也可以沒有返回值的,關(guān)鍵是你要獲取什么東西。
總之,你只要利用這個閉包函數(shù)實現(xiàn)你要的東西,然后返回你需要的東西即可,不一定非要從閉包函數(shù)的返回值中獲取。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php查找技巧與方法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計算法總結(jié)》、《php加密方法總結(jié)》、《PHP編碼與轉(zhuǎn)碼操作技巧匯總》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《PHP數(shù)學(xué)運算技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php正則表達式用法總結(jié)》、及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計有所幫助。
相關(guān)文章
如何取得中文字符串中出現(xiàn)次數(shù)最多的子串
以下是對取得中文字符串中出現(xiàn)次數(shù)最多的子串的實現(xiàn)代碼進行了詳細的分析介紹,需要的朋友可以過來參考下2013-08-08
PHP 偽靜態(tài)技術(shù)原理以及突破原理實現(xiàn)介紹
偽靜態(tài)技術(shù)比較好突破,需要自己構(gòu)造中轉(zhuǎn)注入頁面;偽靜態(tài)技術(shù)原理都很簡單,就是把原來的 index.php?id=1 這種形式的URL給替換成其它形式2013-07-07
PHP中strnatcmp()函數(shù)“自然排序算法”進行字符串比較用法分析(對比strcmp函數(shù))
這篇文章主要介紹了PHP中strnatcmp()函數(shù)“自然排序算法”進行字符串比較用法,結(jié)合實例形式分析了strnatcmp函數(shù)字符串比較的使用技巧,并對比了strcmp函數(shù)說明了兩者的使用區(qū)別,需要的朋友可以參考下2016-01-01
PHP數(shù)學(xué)運算函數(shù)大匯總(經(jīng)典值得收藏)
這篇文章主要介紹了PHP數(shù)學(xué)運算函數(shù),匯總分析了常見的PHP數(shù)學(xué)運算函數(shù)的功能,使用方法與注意事項,需要的朋友可以參考下2016-04-04
PHP實現(xiàn)json_decode不轉(zhuǎn)義中文的方法
這篇文章主要介紹了PHP實現(xiàn)json_decode不轉(zhuǎn)義中文的方法,結(jié)合實例形式具體分析了php5.4+及5.3版本針對json_decode實現(xiàn)不轉(zhuǎn)義中文的具體操作技巧與相關(guān)注意事項,需要的朋友可以參考下2017-05-05
win2003服務(wù)器使用WPS的COM組件的一些問題解決方法
項目中使用了新功能,gump同學(xué)研究出來的使用WPS的COM組件用PHP實現(xiàn)將doc等office格式轉(zhuǎn)換成pdf2012-01-01

