摘要:閉包也叫匿名函數(shù)引入。建議在代碼結(jié)構(gòu)比較亂,需要封裝的時(shí)候使用。希望此文能幫到未曾使用或者對(duì)的閉包有疑問的同學(xué),同時(shí)如果有不對(duì)的地方歡迎支出。
閉包也叫匿名函數(shù) PHP5.3 引入。
使用方法
需要調(diào)整數(shù)組元素中的值
php$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)
php$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í)行效率
php$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ì)的地方歡迎支出。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/20942.html
摘要:實(shí)際上,閉包和匿名函數(shù)是偽裝成函數(shù)的對(duì)象。容器流程淺析是社區(qū)中比較流行的容器。服務(wù)提供者服務(wù)提供者是連接容器與具體功能實(shí)現(xiàn)類的橋梁。服務(wù)提供者需要實(shí)現(xiàn)接口所有服務(wù)提供者必須實(shí)現(xiàn)接口方法。但已經(jīng)完成了服務(wù)提供者的注冊(cè)工作。 需要具備的知識(shí)點(diǎn) 閉包 閉包和匿名函數(shù)在PHP5.3.0中引入的。 閉包是指:創(chuàng)建時(shí)封裝周圍狀態(tài)的函數(shù)。即使閉包所處的環(huán)境不存在了,閉包中封裝的狀態(tài)依然存在。 理論上...
摘要:也正式因?yàn)轭惖姆瓷浜芏嗫蚣懿拍軐?shí)現(xiàn)依賴注入自動(dòng)解決類與類之間的依賴關(guān)系,這給我們平時(shí)的開發(fā)帶來了很大的方便。為了更好地理解,我們通過一個(gè)例子來看類的反射,以及如何實(shí)現(xiàn)依賴注入。反射出方法的參數(shù)其返回值為對(duì)象構(gòu)成的數(shù)組。 PHP具有完整的反射 API,提供了對(duì)類、接口、函數(shù)、方法和擴(kuò)展進(jìn)行逆向工程的能力。通過類的反射提供的能力我們能夠知道類是如何被定義的,它有什么屬性、什么方法、方法都有...
摘要:在中,變量只有兩種,全局變量和局部變量。這里要注意的是定義局部變量必須加上,否則定義了全局變量。上面也可以這樣實(shí)現(xiàn)那么閉包的特點(diǎn)是什么呢首先是之前一直在強(qiáng)調(diào)的可以訪問一個(gè)函數(shù)的局部變量。 **什么是閉包?** 閉包是指所有能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。在JavaScript中,變量只有兩種,全局變量和局部變量。區(qū)別在于任何函數(shù)都可以直接對(duì)全局變量進(jìn)行訪問,而局部變量則只有當(dāng)前函數(shù)以及...
摘要:響應(yīng)式原理之不論如何,最終響應(yīng)式數(shù)據(jù)都要通過來實(shí)現(xiàn),實(shí)際要借助新增的。在函數(shù)內(nèi),首先實(shí)例化一個(gè)實(shí)例,會(huì)在稍后添加為響應(yīng)式數(shù)據(jù)自定義的中發(fā)揮作用。只有數(shù)組和對(duì)象才可能是響應(yīng)式,才能返回實(shí)例。參考鏈接技術(shù)內(nèi)幕揭開數(shù)據(jù)響應(yīng)系統(tǒng)的面紗源碼 Vue響應(yīng)式原理之defineReactive defineReactive 不論如何,最終響應(yīng)式數(shù)據(jù)都要通過defineReactive來實(shí)現(xiàn),實(shí)際要借助...
摘要:任何一層報(bào)錯(cuò),都能用捕獲總結(jié)是一個(gè)非常輕量級(jí)的框架,只實(shí)現(xiàn)了中間件處理流程和對(duì)對(duì)象的封裝。其他的功能都由外部中間件提供。 koa 的中間件機(jī)制巧妙的運(yùn)用了閉包和 async await 的特點(diǎn),形成了一個(gè)洋蔥式的流程,和 JS 的事件流 (捕獲 -> target -> 冒泡) 相似 handleRequest(ctx, fnMiddleware) { const res ...
閱讀 1495·2023-04-26 01:58
閱讀 2373·2021-11-04 16:04
閱讀 1852·2021-08-31 09:42
閱讀 1853·2021-07-25 21:37
閱讀 1119·2019-08-30 15:54
閱讀 2151·2019-08-30 15:53
閱讀 3108·2019-08-29 13:28
閱讀 2761·2019-08-29 10:56