程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php基於閉包實現函數的自調用(遞歸)實例分析

php基於閉包實現函數的自調用(遞歸)實例分析

編輯:PHP綜合

本文實例講述了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查找技巧與方法總結》、《PHP數據結構與算法教程》、《php程序設計算法總結》、《php加密方法總結》、《PHP編碼與轉碼操作技巧匯總》、《php面向對象程序設計入門教程》、《PHP數學運算技巧總結》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《php正則表達式用法總結》、及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved