最近再做一个有关于考试系统的项目,是检验一个自己的php基础,属于一个比较简单的项目吧,但是却遇到了诸多困难呀!
废话不多说,直接上干货:什么是PHP匿名函数? 看官方解释:
匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。
下面是一个匿名函数的实例:
<?php
header("content-type:text/html;charset=utf-8");
//下面我们写一个匿名函数
$func=function($data){
for($i=0;$i<$data;$i++){
echo $i."<br/>";
}
};
//调用匿名函数
$func(100);
?>
结果是从0到$data-1
闭包函数也可以作为变量的值来使用。PHP 会自动把此种表达式转换成内置类 Closure 的对象实例。把一个 closure 对象赋值给一个变量的方式与普通变量赋值的语法是一样的,最后也要加上分号:
use: use子句 让匿名函数使用其作用域的变量
下面是几个小例子,帮助我们去理解:
function test()
{
$param2 = 'every';
// 返回一个匿名函数
return function ($param1) use ($param2) {
// use子句 让匿名函数使用其作用域的变量
$param2 .= 'one';
print $param1 . ' ' . $param2;
};
}
$anonymous_func = test();
$anonymous_func('hello');
function test()
{
$param2 = 'everyone';
$func = function ($param1) use ($param2) {
// use子句 让匿名函数使用其父作用域的变量
print $param1 . ' ' . $param2;
};
$param2 = 'everybody';
return $func;
}
$anonymous_func = test();
$anonymous_func('hello');
function test()
{
$param2 = 'everyone';
$func = function ($param1) use (&$param2) {
// use子句 让匿名函数使用其父作用域的变量
print $param1 . ' ' . $param2;
};
$param2 = 'everybody';
return $func;
}
$anonymous_func = test();
$anonymous_func('hello');
自己动手写一下,注意观察运行结果哦