PHP中函数的引用数组


Array of reference to function in PHP

我想检查integer的值,并根据它选择函数。我可以做一个如果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块。

不要以变量的类型命名。对于一个变量来说,$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);