php匿名函数和闭包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php匿名函数和闭包相关的知识,希望对你有一定的参考价值。
一,匿名函数
一个没有名字的函数,使用function定义
<?php $fun = function($a,$b) { return $a+$b; }; echo $fun(1,2);//输出3
二,闭包函数
函数里面定义函数,子函数使用了父函数的变量,就是闭包,使用关键字use使用父函数的局部变量
(1)
<?php function one() { $a = 10; $b = 20; $fun = function()use($a,$b) { $a++; $b++; echo "{$a} {$b}"; }; $fun();//输出11,21 echo "{$a} {$b}";//输出10,20 } one();
(2)使用父函数局部变量的引用
<?php function one() { $a = 10; $b = 20; $fun = function()use(&$a,&$b) { $a++; $b++; echo "{$a} {$b}"; }; $fun();//输出11,21 echo "{$a} {$b}";//输出11,21 } one();
(3)子函数作为父函数的返回
<?php function one() { $a = 10; $b = 20; $fun = function($c)use(&$a,&$b) { return $a+$b+$c; }; return $fun; } $fun = one(); echo $fun(1);//输出31
(4)子函数作为父函数的返回,父函数的局部变量所在栈区的资源不释放
<?php function one() { $a = 10; $b = 20; $fun = function($c)use(&$a,&$b) { $a++; return $a+$b+$c; }; return $fun; } $fun = one(); echo $fun(1);//输出32 echo $fun(1);//输出33
以上是关于php匿名函数和闭包的主要内容,如果未能解决你的问题,请参考以下文章