【问题标题】:Array of reference to function in PHPPHP中函数的引用数组
【发布时间】:2014-09-10 08:35:07
【问题描述】:

我想检查整数的值并根据这个选择函数。我可以做一个 if-elseif 语句如下:

if($a==0) {function0($a);}
if($a==1) {function1($a);}

等等,但我宁愿做一个函数数组,可能叫做functionArray,可以这样描述:

$functionArray=array( function0($a), function1($a) );

等,这样我们就可以根据$a的值来执行函数,它属于$functionArray[$a]。那可能吗?根据$a 的值,将有超过 20 个函数,这就是为什么我想让它更容易并避免大的 if-elseif 块。

【问题讨论】:

  • 我不明白为什么你需要将$a 传递给回调函数,如果函数的名称已经用数字值硬编码,你可以在里面使用它。你能告诉我们一个函数在你的数组中的作用是什么吗?

标签: php arrays function reference


【解决方案1】:

不要以变量的类型命名。 $functionArray 是一个相当糟糕的变量名称,你至少可以将它命名为一个集合,但是,在我的示例中,我将它命名为 functions

function funcOne($a) {
    echo $a+1;
}

function funcTwo($a) {
    echo $a+2;
}

$functions = array(1 => 'funcOne', 2 => 'funcTwo');

$a = 2;

$functions[$a]($a);

这在 PHP 5.4 下可能不起作用,您可能需要额外的分配,例如$calledFunction = $functions[$a]; $calledFunction($a)。无论如何,这是可能的,如果您要使用命名函数,您只需要将它们添加为字符串。

您也可以使用匿名函数来实现这一点

$functions = array(1 => function($a) { echo $a+1; }, 2 => function($a) { echo $a+2;});

$a = 2;

$functions[$a]($a);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-06
    • 2010-12-14
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    相关资源
    最近更新 更多