码迷,mamicode.com
首页 > Web开发 > 详细

php匿名函数和闭包

时间:2016-06-25 12:24:42      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

一,匿名函数

 一个没有名字的函数,使用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匿名函数和闭包

标签:

原文地址:http://www.cnblogs.com/July7th/p/5616012.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!