Массив ссылки на функцию в PHP

Я хотел бы проверить значение integer и выбрать функцию в зависимости от этого. Я мог бы сделать оператор 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.

Не указывайте переменную после ее типа. $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) $calledFunction = $functions[$a]; $calledFunction($a) . В любом случае, это возможно, вам просто нужно добавить их как строки, если вы собираетесь использовать именованные функции.

Вы также можете использовать анонимные функции для достижения этого

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