PHP函数闭包
来源:互联网 发布:mud游戏编程 编辑:程序博客网 时间:2024/06/01 09:01
PHP的闭包函数和JS的闭包是一样的道理,都是函数内部的函数,同样的闭包会保存函数内的变量,以方便下次的使用。但是也会有执行次数越多,占用内存越多,造成内存泄漏的现象。
接下来我们举个例子来说明一下PHP的闭包,代码如下:
例1:
function getFunc(){ $array = array(); for($i = 0;$i<10;$i++){ $array[$i] = function(){ return "10"; }; } print_r($array); return $array;}$funcArray = getFunc();echo $funcArray[0]();
首先我们大家看看,这里调用函数之后,会echo出来什么值呢,答案是10。
我来解释一下原因:
1️⃣ 在函数内部,定义了一个数组,然后经过了一个for循环之后,数组中的值变成了一个长度为9的闭包函数对象的数组,打印出来是这样的
2️⃣ 然后我们定义的函数就把这个闭包函数数组返回了出来,用变量接收了返回值之后,进行调用了数组中的第一个数组,得出的结果自然就是数组中函数的返回值,也就是return出来的值。
这样一解释,加上输出的图片,是不是就好理解很多了。
嗨嗨,那我们再来看一个例子,是从上一个例子中衍生出来的一个例子,代码如下:
function getFun(){ $array1 = array(); for($i = 0;$i<10;$i++){ $array1[$i] = function()use($i){ return 10 + $i; }; } print_r($array1); return $array1;}$funcArray1 = getFun();echo $funcArray1[9]();
细心的小伙伴一定发现这个例子与上个例子的不同了吧,哈哈,没错就是内部函数后面的那个use()那里,还有内部函数的返回值不一样了,所以大家猜这个函数最后的输出结果会是多少呢,哒哒哒,我猜是19,你们呢?
打印出来看看啊,哈哈~
哈哈,果然是19,解释一下原因:
1️⃣ 相信小伙伴们已经看到上图中的那一坨了,加了use之后,相当于使用了外部变量,然后使得函数返回出来的函数变成了具有静态键值的数组,并且这些键值保存了i所变化的值
2️⃣ 所以当我们在外部再次调用这个函数的时候,这些值还保存在函数内部,因此我们代码中调用了数组中第九个函数,内部函数的返回值就会加上对应保存的9,最终返回19。
呼呼,闭包的这两个例子,小伙们要好好看看哦,理解投了,就会觉得其实PHP的闭包跟JS的大同小异,ok,今天晚上就写到这里,大家晚安~~~
- php闭包函数
- PHP函数闭包
- PHP闭包函数详解
- PHP 闭包函数应用
- php use ---闭包函数
- PHP闭包函数详解
- php闭包函数学习
- php 闭包, 匿名函数
- php 函数【匿名函数、闭包】
- php闭包函数(匿名函数)
- PHP匿名函数(闭包函数)
- PHP匿名函数(闭包函数)
- PHP匿名函数 闭包简单例子
- PHP匿名函数及闭包
- PHP匿名和闭包函数
- PHP匿名函数及闭包
- php闭包和匿名函数
- php中的匿名函数和闭包
- HDU 5929 Basic Data Structure(双端队列)
- UE4流关卡与无缝地图切换总结
- 报错解决问题
- 51talk-2 You look young
- javabean实体类对象转为Map类型对象的方法
- PHP函数闭包
- 【HDU
- 3,数据挖掘环境搭建-Hadoop集群搭建与测试
- vs2015常用快捷键总结
- 导入excel 读取单元格报错
- position中的absolute和relative
- Maven新建webapp项目index.jsp报错
- 批处理改ip
- Træfɪk