国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

匿名函數(shù)的六個(gè)使用技巧

2024-09-04 11:49:49
字體:
供稿:網(wǎng)友

本篇文章主要講述的是匿名函數(shù)的六個(gè)使用技巧,具有一定的學(xué)習(xí)價(jià)值,感興趣的朋友可以學(xué)習(xí)一下。

之前寫過一篇閉包的使用(點(diǎn)擊此處進(jìn)入),這次深入?yún)R總下php中匿名函數(shù)的深入用法和理解:

php中的匿名函數(shù) 也叫閉包函數(shù) 允許指定一個(gè)沒有名稱的函數(shù)。把匿名函數(shù)賦值給變量,通過變量來調(diào)用,舉個(gè)簡單的例子:

  1. <?php$anonymousFunc = function($username){     
  2.  
  3.     echo $username
  4.  
  5.   }; 
  6.  
  7.   $anonymousFunc("喬峰!"); 

技巧1: 將匿名函數(shù)放在普通函數(shù)中,也可以將匿名函數(shù)返回,:這樣就構(gòu)成了一個(gè)簡單的閉包

  1. <?php 
  2.  
  3. function closureFunc(){ 
  4.  
  5.     $anonymousFunc = function(){ 
  6.  
  7.         echo "喬峰!"
  8.  
  9.     }; 
  10.  
  11.     $anonymousFunc();//普通函數(shù)內(nèi)部調(diào)用了匿名函數(shù) 
  12.  
  13.  
  14. closureFunc();//輸出: 喬峰 

技巧2 在匿名函數(shù)中引用局部變量(這里要引用一個(gè)php的關(guān)鍵字 use)

  1. <?php 
  2. function closureFunc(){ 
  3.  
  4.     $username = '喬峰'
  5.  
  6.     $anonymousFunc = function() use($username){ 
  7.  
  8.         echo $username
  9.  
  10.     }; 
  11.  
  12.     $anonymousFunc();//此處調(diào)用了匿名函數(shù) 
  13.  
  14.  
  15. closureFunc();//輸出: 喬峰 

技巧3 在普通函數(shù)中返回匿名函數(shù)

  1. <?php 
  2.  
  3. function closureFunc(){ 
  4.  
  5.     $username = '喬峰'
  6.  
  7.     $anonymousFunc = function() use($username){ 
  8.  
  9.         echo $username
  10.  
  11.     }; 
  12.  
  13.     return $anonymousFunc;// 函數(shù)返回匿名函數(shù) 
  14.  
  15.  
  16. $func = closureFunc(); 
  17.  
  18. $func(); //然后調(diào)用$func() 

技巧4 返回匿名函數(shù)并給匿名函數(shù)傳參

  1. <?php 
  2.  
  3. function closureFunc(){ 
  4.  
  5.     $username = '喬峰'
  6.  
  7.     $anonymousFunc = function($lover,$skilluse($username){ 
  8.  
  9.         echo $username.$lover.$skill
  10.  
  11.     }; 
  12.  
  13.     return $anonymousFunc
  14.  
  15.  
  16. $func = closureFunc(); 
  17.  
  18. $func("阿朱","擒龍手");//喬峰阿朱擒龍手 

技巧5 使用閉包改變上下文引用的變量值

  1. <?php 
  2.  
  3. function closureFunc(){ 
  4.  
  5.     $number = 100; 
  6.  
  7.     $anonymousFunc = function() use($number) { 
  8.  
  9.         $number++; 
  10.  
  11.         echo $number.PHP_EOL; 
  12.  
  13.     }; 
  14.  
  15.     echo $number.PHP_EOL; 
  16.  
  17.     return $anonymousFunc
  18.  
  19.  
  20. $func = closureFunc();// 這里輸出1,直接調(diào)用本函數(shù)的 echo $number.PHP_EOL; 即為100 
  21.  
  22. $func();// 調(diào)用函數(shù)的返回值 $anonymousFunc  $number++ 即為101 
  23.  
  24. $func(); //101 
  25.  
  26. $func();//101 

上面的輸入結(jié)果,發(fā)現(xiàn)后面的兩個(gè)func()均返回 101,值并未發(fā)生改變,如果要累積++效果, 只要加一個(gè) & 引用符號(hào)就可以了(匿名函數(shù)內(nèi)的修改也會(huì)影響外部變量),修改下:

  1. <?php 
  2.  
  3. function closureFunc(){ 
  4.  
  5.     $number = 100; 
  6.  
  7.     $anonymousFunc = function() use(&$number) { 
  8.  
  9.         $number++; 
  10.  
  11.         echo $number.PHP_EOL; 
  12.  
  13.     }; 
  14.  
  15.     echo $number.PHP_EOL; 
  16.  
  17.     return $anonymousFunc
  18.  
  19.  
  20. $func = closureFunc();// 這里輸出1,直接調(diào)用本函數(shù)的 echo $number.PHP_EOL; 即為100 
  21.  
  22. $func();// 調(diào)用函數(shù)的返回值 $anonymousFunc  $number++ 即為101 
  23.  
  24. $func(); //102 
  25.  
  26. $func();//103 

技巧6 把匿名函數(shù)當(dāng)作參數(shù)傳遞

  1. <?php 
  2.  
  3. //定義普通函數(shù),anonymousFunc 為參數(shù)變量 
  4.  
  5. function myFunc($anonymousFunc){ 
  6.  
  7.     $anonymousFunc("喬峰"); 
  8.  
  9.  
  10. myFunc(function($username){ //這里調(diào)用普通函數(shù),并把 匿名函數(shù)作為參數(shù) 傳給了myFunc中的$anonymousFunc 
  11.  
  12.     echo $username
  13.  
  14. });//輸出 喬峰 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 肇源县| 麦盖提县| 太康县| 玉树县| 宁武县| 潜山县| 崇阳县| 定边县| 巴青县| 额敏县| 郯城县| 襄垣县| 阆中市| 余干县| 桃园市| 虎林市| 湖南省| 刚察县| 霍林郭勒市| 布尔津县| 松江区| 永城市| 平乐县| 平和县| 布拖县| 莱州市| 青阳县| 泊头市| 城固县| 大石桥市| 临漳县| 和林格尔县| 甘谷县| 思南县| 维西| 牙克石市| 宜良县| 中方县| 婺源县| 海伦市| 高碑店市|