标签:
一,匿名函数
一个没有名字的函数,使用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
标签:
原文地址:http://www.cnblogs.com/July7th/p/5616012.html