首頁 >後端開發 >php教程 >五分鐘讀懂PHP匿名函數(實例詳解)

五分鐘讀懂PHP匿名函數(實例詳解)

WBOY
WBOY原創
2021-10-15 16:02:494060瀏覽

在先前的文章中為大家帶來了《PHP回呼函數怎樣使用(實例詳解)》,這篇文章中詳細的介紹了PHP中的回調函數的相關知識,本篇文章來看看PHP函數中基本的匿名函數有哪些值得關注的知識點。希望能夠幫助大家!

五分鐘讀懂PHP匿名函數(實例詳解)

PHP匿名函數

#什麼是匿名函數?

匿名函數也叫閉包函數,

什麼是閉包?閉包是可以有自由變數的程式碼區塊;這些變數不在這個程式碼內或全域的其他地方定的,是在定義程式碼區塊的環境中定義,也就是局部變數。 「閉包」 這個字來自以下兩者的結合:要執行的程式碼區塊和為自由變數提供綁定的計算環境。由於自由變數被包含在程式碼區塊中,這些自由變數以及它們所引用的物件並沒有被釋放。其實我們可以通俗的說:子函數可以使用父函數中的局部變量,這種行為就叫做閉包。理論上講,閉包和匿名函數是不同的概念,但是 PHP 將其視為相同的概念,提到閉包時,意思也就是匿名函數,講匿名函數,說的也就是閉包。

也就是說沒有函數名的函數。 PHP 可以建立一個沒有名稱的函數,匿名函數大多會用在回呼函數。

匿名函數可以直接把賦數賦值給變量,匿名函數還是函數,可以傳入參數,直接把賦數賦值給變量,呼叫變數就是呼叫函數。

建立一個匿名變數的語法結構如下:

function (参数列表) {
    ...
}

匿名函數和普通函數是非常相似的,它可以有回傳值,也可以接受參數,不同的是匿名函數會在宣告時省略函數名。

範例如下:

<?php
    $a = function (){
        return &#39;好好学习,天天向上&#39;;
    };
    echo $a();
?>

輸出結果:

五分鐘讀懂PHP匿名函數(實例詳解)

#透過上面的實例可以看出,匿名函數是當作變數的值來使用的,這時候PHP會自動把這種表達式轉換為內建類別表達式,把一個closure賦值給一個變數的方式與普通的變數賦值語法是一樣的,在最後也要加上" ;"(分號)。

接下來,看兩種結合式的匿名函數

  • 變數函數式的匿名函數

#
<?php
$a = function($b)
{
 echo $b.&#39;好好学习&#39;;
};
$a(&#39;福如东海&#39;);
$a(&#39;寿比南山&#39;);
?>

輸出結果:

五分鐘讀懂PHP匿名函數(實例詳解)

上例中的函數體沒有函數名,透過$a加上括號來呼叫的,這就是變數函數式匿名函數。

  • 回呼式的匿名函數

#在我們時實際使用中,時常將匿名函數當作函數或者方法的回呼使用,不只回呼函數,在很多的PHP內侄函數中都會用到匿名函數,範例程式碼如下:

<?php
    $a   = [1,2,3,4,5,6];
    $b = array_map(function ($c) {
        return $c*$c;
    }, $a);
    echo &#39;<pre class="brush:php;toolbar:false">&#39;;
    print_r($b);
?>

輸出結果:

五分鐘讀懂PHP匿名函數(實例詳解)

############################################## #######推薦學習:《###PHP影片教學###》###

以上是五分鐘讀懂PHP匿名函數(實例詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn