在先前的文章中為大家帶來了《PHP回呼函數怎樣使用(實例詳解)》,這篇文章中詳細的介紹了PHP中的回調函數的相關知識,本篇文章來看看PHP函數中基本的匿名函數有哪些值得關注的知識點。希望能夠幫助大家!
#什麼是匿名函數?
匿名函數也叫閉包函數,
什麼是閉包?閉包是可以有自由變數的程式碼區塊;這些變數不在這個程式碼內或全域的其他地方定的,是在定義程式碼區塊的環境中定義,也就是局部變數。 「閉包」 這個字來自以下兩者的結合:要執行的程式碼區塊和為自由變數提供綁定的計算環境。由於自由變數被包含在程式碼區塊中,這些自由變數以及它們所引用的物件並沒有被釋放。其實我們可以通俗的說:子函數可以使用父函數中的局部變量,這種行為就叫做閉包。理論上講,閉包和匿名函數是不同的概念,但是 PHP 將其視為相同的概念,提到閉包時,意思也就是匿名函數,講匿名函數,說的也就是閉包。
也就是說沒有函數名的函數。 PHP 可以建立一個沒有名稱的函數,匿名函數大多會用在回呼函數。
匿名函數可以直接把賦數賦值給變量,匿名函數還是函數,可以傳入參數,直接把賦數賦值給變量,呼叫變數就是呼叫函數。
建立一個匿名變數的語法結構如下:
function (参数列表) { ... }
匿名函數和普通函數是非常相似的,它可以有回傳值,也可以接受參數,不同的是匿名函數會在宣告時省略函數名。
範例如下:
<?php $a = function (){ return '好好学习,天天向上'; }; echo $a(); ?>
輸出結果:
#透過上面的實例可以看出,匿名函數是當作變數的值來使用的,這時候PHP會自動把這種表達式轉換為內建類別表達式,把一個closure賦值給一個變數的方式與普通的變數賦值語法是一樣的,在最後也要加上" ;"(分號)。
接下來,看兩種結合式的匿名函數
變數函數式的匿名函數
<?php $a = function($b) { echo $b.'好好学习'; }; $a('福如东海'); $a('寿比南山'); ?>
輸出結果:
上例中的函數體沒有函數名,透過$a加上括號來呼叫的,這就是變數函數式匿名函數。
回呼式的匿名函數
#在我們時實際使用中,時常將匿名函數當作函數或者方法的回呼使用,不只回呼函數,在很多的PHP內侄函數中都會用到匿名函數,範例程式碼如下:
<?php $a = [1,2,3,4,5,6]; $b = array_map(function ($c) { return $c*$c; }, $a); echo '<pre class="brush:php;toolbar:false">'; print_r($b); ?>
輸出結果:
以上是五分鐘讀懂PHP匿名函數(實例詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!