我想检查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);