> 백엔드 개발 > PHP 튜토리얼 > PHP의 익명 함수에 대한 설명 예

PHP의 익명 함수에 대한 설명 예

黄舟
풀어 주다: 2023-03-14 20:38:02
원래의
1489명이 탐색했습니다.


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

匿名函数由PHP5.3引入,也称为动态函数,在PHP 5.4后有了进一步扩展。下面是一个简单的匿名函数的例子。

<?php$greet = function($name){
    printf("Hello %s\r\n", $name);
};
로그인 후 복사

初看上去很奇怪,其实仔细看与赋值操作很像——如同将一个变量赋值为字符串、整数一样,只不过这次是给一个函数赋值,也就是在后面以分号结束。

$greet(&#39;World&#39;); $greet(&#39;PHP&#39;);
로그인 후 복사

有一个更简单使用匿名函数的方式。PHP中的array_map()函数返回用户自定义函数作用后的数组。回调函数接受的参数数目应该和传递给array_map()函数的数组数目一致。也就是说,array_map()函数接收一个函数作为其第一个参数,第二个参数是数组,数组内的每个元素都将使用之前的函数遍历一遍。

 function format_names($value){
   //etc}
array_map(&#39;format_names&#39; , $names);
로그인 후 복사

上面的代码中,严格来说函数是有名字的。我们再换用匿名函数的方式来处理,格式如下:

array_map(function($value)){
    //etc},$names);
로그인 후 복사

这种方式的好处是:相关代码、函数定义与隐式调用结合更紧密,因为直接使用函数,只需要维护匿名函数定义即可。 使用匿名函数的副作用是,有可能出现解释出错。倘若发现这样的错误,可以把函数中的代码放在一个正常的函数体中执行,调试到没有问题为止。 匿名函数可以使用闭包。这种方式在PHP中比较少用,但在JavaScript中会常用到。如果你的PHP版本小于5.3,需要使用如下方式:

$foo = create_function(&#39;$x&#39;, &#39;return $x*$x;&#39;);$bar = create_function("\$x", "return \$x*\$x;");
echo $foo(10);
로그인 후 복사

在PHP 5.3以后,我们就可以使用以下方式了:

$x = 3;$func = function() use(&$x) { $x *= 2; };$func();echo $x; // 打印结果为 6
로그인 후 복사

闭包语法要优于create_function(),当我们使用create_function()时,参数和函数体都要显式声明,也就是说在代码运行前,PHP无法解析其语法正确性,需要特别注意单引号、双引号和变量命名规则。 当使用闭包后,PHP可以像检查正常代码一样,对匿名函数进行检查。

<?phpfunction getMoneyFunc() {
    $rmb = 1;    $func = function() use ( &$rmb ) {
        echo $rmb;        //把$rmb的值加1
        $rmb++;
    };    return $func;
}$getMoney = getMoneyFunc();$getMoney();//1$getMoney();//2$getMoney();//3
로그인 후 복사

위 내용은 PHP의 익명 함수에 대한 설명 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿