一,匿名函数
一个没有名字的函数,使用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
时间: 2024-10-26 02:56:50