PHP函式閉包

2021-08-10 13:39:17 字數 1338 閱讀 2853

php的閉包函式和js的閉包是一樣的道理,都是函式內部的函式,同樣的閉包會儲存函式內的變數,以方便下次的使用。但是也會有執行次數越多,占用記憶體越多,造成記憶體洩漏的現象。

接下來我們舉個例子來說明一下php的閉包,**如下:

例1:

function

getfunc

(); }

print_r($array);

return

$array;

}$funcarray = getfunc();

echo

$funcarray[0]();

首先我們大家看看,這裡呼叫函式之後,會echo出來什麼值呢,答案是10。

我來解釋一下原因:

1️⃣ 在函式內部,定義了乙個陣列,然後經過了乙個for迴圈之後,陣列中的值變成了乙個長度為9的閉包函式物件的陣列,列印出來是這樣的

2️⃣ 然後我們定義的函式就把這個閉包函式陣列返回了出來,用變數接收了返回值之後,進行呼叫了陣列中的第乙個陣列,得出的結果自然就是陣列中函式的返回值,也就是return出來的值。

這樣一解釋,加上輸出的,是不是就好理解很多了。

function

getfun

(); }

print_r($array1);

return

$array1;

}$funcarray1 = getfun();

echo

$funcarray1[9]();

細心的小夥伴一定發現這個例子與上個例子的不同了吧,哈哈,沒錯就是內部函式後面的那個use()那裡,還有內部函式的返回值不一樣了,所以大家猜這個函式最後的輸出結果會是多少呢,噠噠噠,我猜是19,你們呢?

列印出來看看啊,哈哈~

哈哈,果然是19,解釋一下原因:

1️⃣ 相信小夥伴們已經看到上圖中的那一坨了,加了use之後,相當於使用了外部變數,然後使得函式返回出來的函式變成了具有靜態鍵值的陣列,並且這些鍵值儲存了i所變化的值

2️⃣ 所以當我們在外部再次呼叫這個函式的時候,這些值還儲存在函式內部,因此我們**中呼叫了陣列中第九個函式,內部函式的返回值就會加上對應儲存的9,最終返回19。

呼呼,閉包的這兩個例子,小伙們要好好看看哦,理解投了,就會覺得其實php的閉包跟js的大同小異,ok,今天晚上就寫到這裡,大家晚安~~~

PHP 閉包函式

php v5.3閉包函式,閉包函式沒有函式名稱,直接在function 傳入變數即可 使用時將定義的變數當作函式來處理 匿名函式也叫閉包函式 closures允許建立乙個沒有指定沒成的函式,最經常用作 函式引數的值。閉包函式沒有函式名稱,直接在function 傳入變數即可 使用時將定義的變數當作函...

php的閉包函式bingto php的閉包函式

toc 1 閉包 匿名 函式的意義 閉包 匿名 函式通常作為簡單函式功能的實現。閉包 匿名 函式可以 賦值給變數 或者 作為引數使用 閉包 匿名 函式是 函式程式設計 的基礎 2 閉包 匿名 函式的使用 2 1 匿名函式賦值給變數 greet function name printf hello s...

php匿名函式和閉包

在談閉包之前,先說一下匿名函式,匿名函式實際上相當於把函式當做變數,不需要專門去定義乙個函式。在匿名函式出現之前,如果想把函式當做變數傳遞,得用字串的形式,如下 anonymous function function normal function testanonymous func testan...