Blogger Information
Blog 63
fans 1
comment 0
visits 76318
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP中匿名函数与闭包
桃儿的博客
Original
959 people have browsed it

PHP中匿名函数与闭包

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

匿名函数目前是通过 Closure 类来实现的。

// 匿名函数, 做为值来使用
$sum = function ($a, $b) {
   return $a + $b;
};
echo $sum(5,6);


// 匿名函数: 做为回调参数来使用
$arr = [3,1,6,2,9];
usort($arr, function ($a, $b){
//    return $a - $b;   // 升序排列
//    return $b - $a; // 降序排列
// php7中, 有一个语法:太空船操作符
//    return $a <=> $b;//升序
   return $b <=> $a;//降序
});
$res=print_r($arr,true);
echo '<pre>'.$res.'</pre>';

获取父作用域中的变量

直接获取外部变量是错的,需要使用use( )

$email = 'admin@php.cn';
$f1 = function () use ($email) {
   return $email;
};
echo $f1();

在闭包函数中对外部变量进行更新

将外部变量以引用的方式传入,只需要在参数前添加一个取地址符: & 即可

$email = 'admin@php.cn';
$f3 = function () use (&$email) {
   return $email = 'peter@html.cn';
};
echo $f3();


在子函数中的使用

function demo()
{
   $name = 'Peter Zhu';
   return function () use ($name) {
       return $name;
   };
}
//demo()返回结果是函数, 所以需要再次调用
echo demo()();


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post