PHP中的閉包(匿名函數(shù))淺析
閉包也叫匿名函數(shù) PHP5.3 引入。
使用方法
需要調(diào)整數(shù)組元素中的值
$data = range(0, 100);//想要每個(gè)元素的值都加上.html的后綴
$suffix = '.html';
function makeSuffix($str, $suffix)
{
return $str . $suffix;
}
$new_data = array_map(function($item) use ($suffix) {
return makeSuffix($item, $suffix);
}, $data);
需要改變?cè)氐慕Y(jié)構(gòu)
$arr = [
[
'id'=>'',
'name'=>'',
'create_time'=>'',
],
];
$new_data = array_map(function($item) {
return ['id'=>$item['id'],'name'=>$item['name']];
}, $arr);
//如果是用foreach還需要在循環(huán)里面建立零時(shí)變量,把需要的值賦給這個(gè)變量
執(zhí)行效率
$data = range(0, 50000)
//1
foreach ($data as &$value) {
$value = makeSuffix($value, $suffix);
}
//2
foreach ($data as $value) {
$new[] = makeSuffix($value, $suffix);
}
//3
array_map(function($item) use ($suffix) {
return makeSuffix($item, $suffix);
}, $data);
經(jīng)過5W次執(zhí)行之后,從結(jié)果看1-3,大部分情況執(zhí)行時(shí)間依次升高,其中一次執(zhí)行結(jié)果時(shí)間如下
1:0.0260009765625
2:0.038002014160156
3:0.047003030776978
結(jié)論
閉包的代碼相對(duì)優(yōu)雅,但是邏輯比較容易混淆,相比其他方式執(zhí)行效率相對(duì)較低,要慎用。建議在代碼結(jié)構(gòu)比較亂,需要封裝的時(shí)候使用。
希望此文能幫到未曾使用或者對(duì) PHP 的閉包有疑問的同學(xué),同時(shí)如果有不對(duì)的地方歡迎支出。
- 詳解PHP中instanceof關(guān)鍵字及instanceof關(guān)鍵字有什么作用
- php中instanceof 與 is_a()區(qū)別分析
- PHP 面向?qū)ο蟪绦蛟O(shè)計(jì)(oop)學(xué)習(xí)筆記(一) - 抽象類、對(duì)象接口、instanceof 和契約式編程
- php的閉包(Closure)匿名函數(shù)初探
- php的閉包(Closure)匿名函數(shù)詳解
- PHP閉包(Closure)使用詳解
- 淺析PHP中的閉包和匿名函數(shù)
- PHP閉包實(shí)例解析
- PHP 閉包詳解及實(shí)例代碼
- php的instanceof和判斷閉包Closure操作示例
相關(guān)文章
php啟動(dòng)時(shí)候提示PHP startup的解決方法
配置好php環(huán)境后,每次開機(jī)都有警告提示說 PHP startup,解決這個(gè)問題很簡(jiǎn)單只需要在php.ini 文件中修改 extension_dir配置就行2013-05-05PHP8使用Attributes管理代碼元數(shù)據(jù)的示例詳解
在PHP 8中引入了一項(xiàng)強(qiáng)大的功能,即"Attributes"(屬性),它們提供了一種新的方法來管理和操縱代碼元數(shù)據(jù),Attributes允許你在代碼中添加元數(shù)據(jù),本文給大家介紹了在PHP8中是如何使用Attributes管理代碼元數(shù)據(jù),需要的朋友可以參考下2023-12-12PHP隱形一句話后門,和ThinkPHP框架加密碼程序(base64_decode)
今天一個(gè)客戶的服務(wù)器頻繁被寫入一句話后門,刪除了還有,原來在程序中加入了如下代碼,大家可以注意下base64_decode函數(shù)的參數(shù)。2011-11-11Laravel 5.4重新登錄實(shí)現(xiàn)跳轉(zhuǎn)到登錄前頁(yè)面的原理和方法
在日常開發(fā)中,我們經(jīng)常遇到一個(gè)需求,就是用戶登陸后存在過期時(shí)間,超時(shí)用戶需重新登錄,下面這篇文章主要給大家介紹了關(guān)于Laravel 5.4重新登錄實(shí)現(xiàn)跳轉(zhuǎn)到登錄前頁(yè)面的原理和方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07如何從一個(gè)php文件向另一個(gè)地址post數(shù)據(jù),不用表單和隱藏的變量的
如何從一個(gè)php文件向另一個(gè)地址post數(shù)據(jù),不用表單和隱藏的變量的...2007-03-03PHP微信開發(fā)之微信錄音臨時(shí)轉(zhuǎn)永久存儲(chǔ)
這篇文章主要為大家詳細(xì)介紹了PHP微信開發(fā)之微信錄音臨時(shí)轉(zhuǎn)永久存儲(chǔ),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01PHP使用DirectoryIterator顯示下拉文件列表的方法
這篇文章主要介紹了PHP使用DirectoryIterator顯示下拉文件列表的方法,涉及php使用DirectoryIterator操作文件的技巧,需要的朋友可以參考下2015-03-03