Php - 在运行时选择一个函数

时间:2016-03-24 20:11:11

标签: php function

我不知道这叫什么。

我想这样做

// Elsewhere
function A($arg){
    echo "Hi" . $arg;
}
function B($arg){
    echo "Bye" . $arg;
}

for($i=0;$i<2;$i++)
{
    $FunctionUse = $i==0 ? A : B;
    $FunctionUse("Rewind");
}

可以这样做吗?

3 个答案:

答案 0 :(得分:1)

是的,使用call_user_func

另外,请务必查看此链接Variable functions

此外,如果您将AB更改为字符串,您的代码也会有效:

$FunctionUse = $i==0 ? 'A' : 'B';

答案 1 :(得分:0)

这是一个简短而简单的解决方案:

$a = function ($arg){
  echo "Hi" . $arg;
}

$b = function ($arg){
    echo "Bye" . $arg;
}

for($i=0;$i<2;$i++){
  $FunctionUse = $i==0 ? $a : $b;
  $FunctionUse("Rewind");
}

请注意,此功能现在具有可变范围。您可能需要在函数或类中将其定义为全局:

global $a, $b;

但是要解决你提出的案例,使用if语句会更容易。

答案 2 :(得分:-1)

使用call_user_func:

// Elsewhere
function A($arg){
    echo "Hi" . $arg;
}
function B($arg){
    echo "Bye" . $arg;
}

for($i=0;$i<2;$i++)
{
    $FunctionUse = $i==0 ? 'A' : 'B';
    call_user_func($FunctionUse, "Rewind");
}