Я хотел бы проверить значение 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);