当我尝试这样做时:
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.
"本地函数"的概念也被命名为"函数内部函数"或" 嵌套函数 "......线索在这个页面,匿名函数,由@ceejayoz和@Nexerus引用,但是,让我们解释一下!
通过例子解释:
函数b()in function a(){ function b() {} return b(); }也是全局的,因此声明具有相同的效果function a(){ return b(); } function b() {}.
要在()的范围内声明类似"函数b()",唯一的选择是使用not b()而不是引用$b().语法将是这样的function a(){ $b = function() { }; return $b(); }
PS:在PHP中无法声明"静态引用",匿名函数永远不会是静态的.
也可以看看: