PHP中函数的引用数组

时间:2014-09-10 08:35:07

标签: php arrays function reference

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

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

等,但我宁愿创建一个函数数组,也就是functionArray,可以描述如下:

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

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

1 个答案:

答案 0 :(得分:0)

请勿在其类型后命名变量。 $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);