我想检查整数的值并根据此选择函数。我可以做一个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块。
答案 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);