日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
PHP匿名函數(shù)(閉包函數(shù))
匿名函數(shù)(Anonymous functions)就是沒有函數(shù)名的函數(shù),也叫閉包函數(shù)(closures),是在 php5.3 中新增一個特性。

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設、雞東網(wǎng)絡推廣、微信小程序開發(fā)、雞東網(wǎng)絡營銷、雞東企業(yè)策劃、雞東品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供雞東建站搭建服務,24小時服務熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com

PHP 允許臨時創(chuàng)建一個沒有指定名稱的函數(shù)。匿名函數(shù)通常用在回調(diào)函數(shù)中,同時匿名函數(shù)也可以賦值給一個變量后使用,還能像其他任何 PHP 對象那樣傳遞,不過匿名函數(shù)仍然是函數(shù),因此可以調(diào)用,并且可以傳入?yún)?shù)。

注意:理論上講,閉包和匿名函數(shù)是不同的概念,不過 PHP 將其視作相同的概念,所以提到閉包時,指的就是匿名函數(shù),反之亦然。

創(chuàng)建匿名函數(shù)

創(chuàng)建匿名函數(shù)很簡單,其語法結(jié)構(gòu)如下所示:

function (參數(shù)列表) {
    ...
}

可以看出,匿名函數(shù)與普通函數(shù)非常類似,同樣可以接受參數(shù),并且可以有返回值,只是匿名函數(shù)在聲明時會省略函數(shù)名。

【示例】下面通過一個簡單的示例來演示一下如何創(chuàng)建匿名函數(shù),代碼如下所示:

運行結(jié)果如下:

http://c.biancheng.net/php/

通過上面的示例可以看出,匿名函數(shù)可以作為變量的值來使用。此時 PHP 會自動把此種表達式轉(zhuǎn)換成內(nèi)置類 Closure 的對象實例。把一個 closure 對象賦值給一個變量的方式與普通變量賦值的語法是一樣的,最后也要加上分號
;。

實際開發(fā)中,我們通常將匿名函數(shù)當做函數(shù)或方法的回調(diào)使用,在很多 PHP 內(nèi)置函數(shù)中都會用到匿名函數(shù),比如 array_map 和 preg_replace_callback,示例代碼如下:

';
    print_r($result);
?>

運行結(jié)果如下:

Array
(
    [0] => 1
    [1] => 4
    [2] => 9
    [3] => 16
    [4] => 25
    [5] => 36
)

use 關(guān)鍵字

使用 use 關(guān)鍵字,閉包函數(shù)可以實現(xiàn)從父級作用域中繼承變量,但是從 php7.1 開始,不支持繼承預定義變量和 $this。

【示例】下面通過示例來演示 use 關(guān)鍵字的使用,代碼如下所示:

';
        $url     = 'http://c.biancheng.net/php/';
        $func    = function() use ($website) {
            echo '$website = '.$website;
            echo '$url = '.$url;
        };
        $func();
    }
    demo();
?>

運行結(jié)果如下:

$website = C語言中文網(wǎng)
$url =

通過運行結(jié)果可以看出,$url 并沒有通過 use 關(guān)鍵字繼承到匿名函數(shù)中,所以無法打印 $url 的值。

需要注意的是,匿名函數(shù)雖然可以繼承父級作用域中的變量,但是在匿名函數(shù)中修改變量的值不會對父級作用域中的變量造成影響,示例代碼如下:

';
        };
        $func();
        echo '匿名函數(shù)外 $num 的值為:'.$num;
    }
    demo();
?>

運行結(jié)果如下:

匿名函數(shù)中 $num 的值為:2
匿名函數(shù)外 $num 的值為:1

如果想要在修改匿名函數(shù)繼承的變量的同時,同樣修改其父級作用域中的變量,則需要在變量名的前面添加 & 符號,類似于函數(shù)中的引用傳遞。示例代碼如下:

';
        };
        $func();
        echo '匿名函數(shù)外 $num 的值為:'.$num;
    }
    demo();
?>

運行結(jié)果如下:

匿名函數(shù)中 $num 的值為:2
匿名函數(shù)外 $num 的值為:2


標題名稱:PHP匿名函數(shù)(閉包函數(shù))
當前鏈接:http://www.dlmjj.cn/article/dpeossc.html