PHP匿名函数

匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。

变量赋值

闭包函数可以作为变量的值使用,最后需要加分号。

1
2
3
4
5
$test = function ($var) {
echo $var;
};
$test('hello');
$test('world');

回调函数参数

example1:

1
2
3
4
5
6
function myfunction($v)
{
return($v*$v);
}
$a=array(1,2,3,4,5);
print_r(array_map("myfunction",$a));//1,4,9,16,25

example2:

1
2
3
4
5
6
$test = ['a' => 1, 'b' => 2];
$res = array_map(function ($item) {
$item = 3;
return $item;//注意,一定要有return
}, $test);
echo $res;//['a'=>3,'b'=>3]

父作用域继承变量

闭包想要使用父作用域中的变量需要使用use关键字,匿名函数不会自动从父作用域中继承变量.

1
2
3
4
5
6
7
$var = "hello";
$test = ['apple', 'orange'];
$res = array_map(function ($item) use ($var) {
$item = $var . ',' . $item;
return $item;
}, $test);
print_r($test);//["hello,apple","hello,orange"]

use中还可以使用引用变量

1
2
3
4
5
6
7
$var = 1;
$test = [1, 2, 3];
$res = array_map(function ($item) use (&$var) {
$var += $item;
return $item;
}, $test);
echo $var;//7