新聞中心

成都創(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


咨詢
建站咨詢
