如何在PHP中定义本地函数?
当我尝试这样做时:如何在PHP中定义本地函数?,php,function,Php,Function,当我尝试这样做时: function a() { function b() { } } a(); a(); function a() { if(!isset(b)) function b() { } } a(); a(); 我得到无法重新申报b.. 当我尝试这样做时: function a() { function b() { } } a(); a(); function a() { if(!isset(b)) func
function a()
{
function b() { }
}
a();
a();
function a()
{
if(!isset(b))
function b() { }
}
a();
a();
我得到无法重新申报b..
当我尝试这样做时:
function a()
{
function b() { }
}
a();
a();
function a()
{
if(!isset(b))
function b() { }
}
a();
a();
我得到意外的),预期的…
当
a
返回时,如何将函数声明为本地函数并将其遗忘?我需要函数将其传递给array\u filter
您可以尝试PHP提供的create\u函数。
此方法不需要PHP5.3+您可以在数组中使用过滤器调用。本地函数的概念也被命名为“函数内部函数”或“。。。
线索就在这一页上,@ceejayoz和@Nexerus引用过,但是,让我们解释一下
在PHP中,只存在函数声明的全局范围李>
唯一的选择是使用另一种函数,匿名函数
举例说明:
函数a(){function b(){}return b();}
中的函数b()
也是全局函数,因此声明与函数a(){return b();}函数b(){}
具有相同的效果
要声明类似“a()范围内的函数b()”的内容,唯一的替代方法是使用引用而不是b()
。语法类似于function a(){$b=function(){};return$b();}
PS:在PHP中不可能声明“静态引用”,匿名函数永远不会是静态的
另见:
- ()
您可以在PHP中定义本地函数,但只能声明一次。这可以通过定义和比较静态变量来实现
检查以下示例:
<?php
function a()
{
static $init = true;
if ($init) {
function b() { }
$init = FALSE;
}
}
a();
a();
嵌套函数要求一个世界的伤害。您使用的是什么版本的PHP?@Mark Elliot:产生这些错误的版本是PHP版本5.3.2-1ubuntu4.2
,但这必须在PHP版本5.3.6
上运行,您的意思是“if(!function_exists('b')”而不是“if(!isset(b))?如果(!function_存在('b')){function b(){}}应该可以工作。