php基於閉包實現函數的自調用(遞迴)執行個體分析

來源:互聯網
上載者:User
本文執行個體講述了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基於閉包實現函數的自調用(遞迴)執行個體分析 的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.