国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP閉包的理解與介紹

gotham / 2858人閱讀

摘要:閉包與函數(shù)真正的區(qū)別函數(shù)封裝一次多處調(diào)用。閉包只限于本方法使用,耦合度低到忽略。

看過許多關(guān)于PHP中閉包的講解,每個(gè)文檔想要表達(dá)的意思大體相同,但是理解起來很費(fèi)勁,我根據(jù)自身理解加以描述,有更好的理解請指出

眾所周知,大家都知道PHP的閉包是function () use (){};

本文分為3步
1:講解閉包的使用
2:閉包實(shí)例
3:閉包總結(jié)

1、講解閉包的使用
1:閉包中的use使用-上篇

 function () use($param){}; 
$param = 1;
$data = function () use ($param)
{
    var_dump($param);    
};

$data();

$param = 2;
$data();

// 輸出結(jié)果為
1
1

分析結(jié)果:use的用法相當(dāng)于對象(類的用法),$data(),表示實(shí)例化一次,然而語言有著文本流的特性,第二次$data()沒有重新實(shí)例,實(shí)例的時(shí)候取到的值是1,所以輸出結(jié)果為上面結(jié)果;

2:閉包中的use使用-下篇

$param = 1;
$data = function () use ($param)
{
    var_dump($param);    
};

$data();

$param = 2;
$data = function () use ($param)
{
    var_dump($param);    
};
$data();

// 輸出結(jié)果為
1
2

分析結(jié)果:文本流的形式,又實(shí)例化一次變量所以存儲變量為2,最終輸出為2;

3:閉包中function()后面的括號,use前面的括號用法

 function ($obj) use($param){}; 
    $param = 1;
    $data = function ($obj) use ($param)
    {
        var_dump($obj);
        var_dump($param);    
    };
    $data(2);
    
    $data(3);
    
    $param = 2;
    $data(4);
    // 輸出
    2
    1
    
    3
    1
    
    4
    1

分析結(jié)果:function后面的括號相當(dāng)于函數(shù)的用法,每次調(diào)用函數(shù)時(shí)傳入數(shù)據(jù)一樣,每次都需要傳入,后面的use表示實(shí)例一次后不變,所以obj隨時(shí)改變。

2、閉包實(shí)例

例子1:

    $arr = [
        "米" => ["咸粥", "甜粥", "米飯"], 
        "面" => ["面條", "花卷", "饅頭"], 
    ];

    $param = "";
    $bag = function ($data) use ($param)
    {
        $l = count($data);
        return $data[rand(0, $l-1)];
    };

    $eat_arr = [];
    
    foreach ($arr as $key => $value) {
        $each_arr[] = "吃".$key.":".$bag($value);        
    }

    echo implode(",", $each_arr);
    
    // 輸出
    吃米:米飯,  吃面:面條
    吃米:甜粥,  吃面:饅頭

例子2:

    $arr = [
        "米" => ["咸粥", "甜粥", "米飯"], 
        "面" => ["面條", "花卷", "饅頭"], 
    ];

    $eat_arr = [];
    
    foreach ($arr as $key => $value) 
    {
        $bag = function () use ($value)
        {
            $l = count($value);
            return $value[rand(0, $l-1)];
        };

        $each_arr[] = "吃".$key.":".$bag();        
    }

    echo implode(",", $each_arr);
    // 輸出
    吃米:甜粥, 吃面:面條
    吃米:甜粥, 吃面:花卷
    

3、閉包總結(jié)

閉包總結(jié)到最后,就是與函數(shù)不同的地方就是多加了一個(gè)use中間值,使用的時(shí)候注意一點(diǎn)是function后面的()為可變變量,use()里面的變量為實(shí)例一次后不改動的變量,循環(huán)里面寫閉包這種方法不是很好用,相當(dāng)于每次都實(shí)例,所以閉包的寫法可以先定義一個(gè)方法在調(diào)用。

閉包與函數(shù)真正的區(qū)別:

函數(shù):封裝一次多處調(diào)用。
閉包:只限于本方法使用,耦合度低到忽略。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/31208.html

相關(guān)文章

  • 談?wù)勎宜?em>理解閉包,js、php、golang里closure

    摘要:當(dāng)初看這個(gè)解釋有點(diǎn)懵逼,理解成閉包就是函數(shù)中的函數(shù)了。里的閉包最近不滿足于只干前端的活,開始用起了。里的閉包最近在學(xué)習(xí)語言,讓我們來看一下語言里的閉包。在中,閉包特指將函數(shù)作為值返回的情況,被返回的函數(shù)引用了生成它的母函數(shù)中的變量。 本人開始接觸編程是從js開始的,當(dāng)時(shí)網(wǎng)上很多人說閉包是難點(diǎn),各種地方對閉包的解釋也是千奇百怪。如今開始接觸js以外的各種編程語言,發(fā)現(xiàn)不光是js,php、...

    betacat 評論0 收藏0
  • 談?wù)勎宜?em>理解閉包,js、php、golang里closure

    摘要:當(dāng)初看這個(gè)解釋有點(diǎn)懵逼,理解成閉包就是函數(shù)中的函數(shù)了。里的閉包最近不滿足于只干前端的活,開始用起了。里的閉包最近在學(xué)習(xí)語言,讓我們來看一下語言里的閉包。在中,閉包特指將函數(shù)作為值返回的情況,被返回的函數(shù)引用了生成它的母函數(shù)中的變量。 本人開始接觸編程是從js開始的,當(dāng)時(shí)網(wǎng)上很多人說閉包是難點(diǎn),各種地方對閉包的解釋也是千奇百怪。如今開始接觸js以外的各種編程語言,發(fā)現(xiàn)不光是js,php、...

    zhoutao 評論0 收藏0
  • Laravel修煉:服務(wù)容器綁定解析

    摘要:用匿名函數(shù)的好處在于,這個(gè)服務(wù)綁定到容器以后,并不會立即產(chǎn)生服務(wù)最終的對象,只有在這個(gè)服務(wù)解析的時(shí)候,匿名函數(shù)才會執(zhí)行,此時(shí)才會產(chǎn)生這個(gè)服務(wù)對應(yīng)的服務(wù)實(shí)例。 前言 ? 老實(shí)說,第一次老大讓我看laravel框架手冊的那天早上,我是很絕望的,因?yàn)檎娴臎]接觸過,對我這種渣渣來說,laravel的入門門檻確實(shí)有點(diǎn)高了,但還是得硬著頭皮看下去(雖然到現(xiàn)在我還有很多沒看懂,也沒用過)。? 后面慢...

    The question 評論0 收藏0
  • PHP 7.4 新語法:箭頭函數(shù)

    摘要:原因如下短閉包的目的是為了減少冗余。然而,的創(chuàng)建者認(rèn)為,如果你要處理的是多行表達(dá)式的函數(shù),那么使用閉包獲得的益處就更少了。這意味著你可以改變短閉包內(nèi)的變量,但它不會對外部作用域中的變量產(chǎn)生影響。 showImg(https://segmentfault.com/img/remote/1460000019117465?w=722&h=350);短閉包,也叫做箭頭函數(shù),是一種用 php 編...

    darcrand 評論0 收藏0
  • 2018年騰訊前端一面總結(jié)(面向2019屆學(xué)生)

    摘要:前言騰訊一面,相比阿里一面來說,騰訊一面先給打電話預(yù)定時(shí)間,這也給了我們這些面試者去準(zhǔn)備的時(shí)間。其實(shí)閉包也就是指有權(quán)訪問另一個(gè)函數(shù)作用域的函數(shù)而已。常用的創(chuàng)建閉包的方法就是在函數(shù)內(nèi)部創(chuàng)建另一個(gè)函數(shù)。 前言 騰訊一面,相比阿里一面來說,騰訊一面先給打電話預(yù)定時(shí)間,這也給了我們這些面試者去準(zhǔn)備的時(shí)間。但是也正是因?yàn)檫@種確定性,也有在等待電話的時(shí)候的心情的忐忑。 背景 我是一名大三學(xué)生,大一...

    Kosmos 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<