PHP匿名函数

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

变量赋值

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

$test = function ($var) {
      echo $var;
};
$test('hello');
$test('world');

回调函数参数

example1:

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:

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

父作用域继承变量

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

$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中还可以使用引用变量

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

  转载请注明: Mantis PHP匿名函数

 上一篇
PHP代码优化的53个细节 PHP代码优化的53个细节
用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故
2016-08-20 Mantis
下一篇 
Laravel 中使用七牛云存储远程文件(针对私有空间) Laravel 中使用七牛云存储远程文件(针对私有空间)
首先你得有自己的七牛云账号,会有10g免费空间,申请成功之后你会得到一串一个SecretKey和一个AccessKey; 然后创建一个自己的空间,例如:mybucket; 创建完之后七牛云也会分配给你三个默认的域名,比如这样的:7xvqs
2016-08-13 Mantis