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

首頁 > 編程 > PHP > 正文

php中的匿名函數(shù)和閉包(closure)

2020-03-22 17:54:08
字體:
供稿:網(wǎng)友
  • 一:匿名函數(shù) (在php5.3.0 或以上才能使用)

    php中的匿名函數(shù)(Anonymous functions), 也叫閉包函數(shù)(closures), 允許指定一個(gè)沒有名稱的函數(shù)。最常用的就是回調(diào)函數(shù)的參數(shù)值。(http://php.net/manual/zh/functions.anonymous.php)

    匿名函數(shù)的定義:

    $closureFunc = function(){    .... };

    eg: 把匿名函數(shù)賦值給變量,通過變量來調(diào)用

     $closureFunc = function($str){   echo $str;  };  $closureFunc('hello world!');

    輸出:hello world!

    二:閉包

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

    function closureFunc1(){    $func = function(){        echo 'hello';    };    $func();}closureFunc1();//輸出: hello

    2.2 在匿名函數(shù)中引用局部變量

    function closureFunc2(){    $num = 1;    $func = function(){        echo $num;    };    $func();}closureFunc2();//Notice: Undefined variable: num

    上面的函數(shù)運(yùn)行后,會(huì)報(bào)Notice錯(cuò)誤,說明我們不能在匿名函數(shù)中這樣使用局部變量,這時(shí)候就要引用一個(gè)php的關(guān)鍵字 use, 代碼如下

    function closureFunc2(){    $num = 1;    $func = function() use($num){        echo $num;    };    $func();}closureFunc2();//輸出: 1

    2.3 返回匿名函數(shù)

    function closureFunc3(){    $num = 1;    $func = function() use($num){        echo $num;    };    return $func;}$func = closureFunc3(); //函數(shù)返回匿名函數(shù)$func(); //然后我們在用$func() 調(diào)用//輸出: 1

    2.4 當(dāng)我們在返回匿名函數(shù)時(shí)候怎么給匿名函數(shù)傳參呢? 其實(shí)跟普通函數(shù)傳參數(shù)一樣

    function closureFunc4(){    $num = 1;    $func = function($str) use($num){        echo $num;        echo '';        echo $str;    };    return $func;}$func = closureFunc4();$func('hello, closure4');//輸出://1//hello, closure4

    2.5 怎么用閉包來改變上下文引用的變量值?

    function closureFunc5(){    $num = 1;    $func = function() use($num) {        echo '';        $num++;        echo $num;    };    echo '';    echo $num;    return $func;}$func = closureFunc5();$func();$func();$func();//輸出:// 1// 2// 2// 2

    看上面的輸入結(jié)果,顯然沒有達(dá)到目的, 其實(shí)只要加一個(gè) & 引用符號就可以了

    function closureFunc5(){    $num = 2;    $func = function() use(&$num) {        echo '';        $num++;        echo $num;    };    echo '';    echo $num;    return $func;}$func = closureFunc5();$func();$func();$func();//輸出:// 2// 3// 4// 5

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

    function callFunc($func){    $func('argv');}callFunc(function($str){    echo $str;})//輸出:// argv

    PHP編程

    鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

  • 發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表
    主站蜘蛛池模板: 白朗县| 浠水县| 平果县| 财经| 盐城市| 张掖市| 安塞县| 上虞市| 灌阳县| 顺义区| 沾益县| 吕梁市| 竹北市| 城市| 淳安县| 阳信县| 凤凰县| 大方县| 靖宇县| 张家口市| 普宁市| 建始县| 龙岩市| 成安县| 方正县| 江达县| 利津县| 金秀| 台安县| 泌阳县| 台山市| 方城县| 云浮市| 临泉县| 嘉黎县| 犍为县| 长乐市| 信阳市| 丹江口市| 施甸县| 无极县|