如何在PHP中定义本地函数?

Dan*_*ani 7 php function

当我尝试这样做时:

function a()
{
    function b() { }
}

a();
a();
Run Code Online (Sandbox Code Playgroud)

我得到Cannot redeclare b....
当我试图这样做时:

function a()
{
    if(!isset(b))
        function b() { }
}

a();
a();
Run Code Online (Sandbox Code Playgroud)

我得到unexpected ), expected ....
如何将函数声明为本地函数并在a返回时将其遗忘?我需要将函数传递给它array_filter.

cee*_*yoz 8

您可以在通话中使用匿名功能array_filter.


Pet*_*uss 7

"本地函数"的概念也被命名为"函数内部函数"或" 嵌套函数 "......线索在这个页面,匿名函数,由@ceejayoz和@Nexerus引用,但是,让我们解释一下!

  1. 在PHP中,只存在函数声明的全局范围 ;
  2. 唯一的选择是使用另一种功能,即匿名功能.

通过例子解释:

  1. 函数b()in function a(){ function b() {} return b(); }也是全局的,因此声明具有相同的效果function a(){ return b(); } function b() {}.

  2. 要在()的范围内声明类似"函数b()",唯一的选择是使用not b()而不是引用$b().语法将是这样的function a(){ $b = function() { }; return $b(); }

PS:在PHP中无法声明"静态引用",匿名函数永远不会是静态的.

也可以看看: